【问题标题】:Android deep link: Skip splash screen if app has already launched/openedAndroid 深层链接:如果应用程序已经启动/打开,则跳过启动屏幕
【发布时间】:2019-09-11 09:05:39
【问题描述】:

我希望当用户点击以下格式的链接时,他们将可以选择直接启动应用程序https://www.somedomain.com/asia/country?name=blabla。如果应用程序尚未启动,它应该启动 SplashScreenActivity 屏幕;但如果应用已经打开,我想跳过 SplashScreenActivity 屏幕,直接显示 MainActivity 屏幕。

我将我的清单配置如下并将 SplashScreenActivity 设置为 singleTask,但每次我点击深层链接 url 时,它都会从开始 (SplashScreenActivity) 启动。有没有办法解决这个问题?

<activity
   android:name=".myapp.ui.SplashScreenActivity"
   android:screenOrientation="portrait"
   android:launchMode="singleTask"
   android:theme="@style/FullScreen">
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
   <intent-filter>
       <action android:name="android.intent.action.VIEW"/>
       <category android:name="android.intent.category.DEFAULT"/>
       <category android:name="android.intent.category.BROWSABLE"/>

       <data
           android:host="www.somedomain.com"
           android:path="/asia/country"
           android:scheme="https"/>

   </intent-filter>
</activity>
<activity
   android:name=".myapp.ui.MainActivity"
   android:configChanges="layoutDirection|locale"
   android:screenOrientation="portrait"
   android:theme="@style/AppTheme"
   android:windowSoftInputMode="adjustNothing" >
</activity>

【问题讨论】:

  • 我真的不喜欢其他人不回答我的直接问题,但仍然:如果它正在加载数据并且您不能在 MainActiviy 中显示更有意义的内容,您应该只显示启动屏幕.您遇到问题的事实告诉我不需要启动屏幕。如果您仍然必须或想要:SplashScreenActivity 接收 Intent。在SplashScreenActivityonCreate 中,检查意图。如果它包含深层链接,请立即启动您的 MainActivity

标签: android android-deep-link


【解决方案1】:

添加意图过滤器

<activity
    android:name="Your Activity"
    android:label="Your Activity Title"
    android:theme="Your Style">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter android:autoVerify="true">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:host="your url"
            android:path="/your path"
            android:scheme="http" />
    </intent-filter>
</activity>

【讨论】:

  • 请解释一下它的作用和使用方法
【解决方案2】:

如果您设置了 SplashActvity 的启动模式(单任务),那么当您打开 SplashActivity 时,将调用一个方法

 @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
}

使用此方法导航到 MainActivity。

【讨论】:

  • 我在 SplashScreenActivity 中尝试使用 onNewIntent(),但不知何故它没有被调用。
猜你喜欢
  • 2016-06-26
  • 2020-04-07
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2021-06-08
相关资源
最近更新 更多