2

我希望当用户单击以下格式的链接时,他们将可以选择直接启动应用程序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>
4

2 回答 2

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>
于 2019-09-11T09:35:40.520 回答
0

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

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

使用此方法导航到 MainActivity。

于 2019-09-11T09:45:49.210 回答