Android没有';如果应用程序已启动,则无法按url方案打开活动

Android没有';如果应用程序已启动,则无法按url方案打开活动,android,url-scheme,Android,Url Scheme,我有StartActivity和MainActivity,在清单方案中已设置 <activity android:name=".StartActivity" android:label="@string/app_name" android:theme="@style/AppThemeNoActionBar"> <intent-filter> <action android

我有StartActivity和MainActivity,在清单方案中已设置

    <activity
        android:name=".StartActivity"
        android:label="@string/app_name"
        android:theme="@style/AppThemeNoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <data android:scheme="myApp" />
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity>

    <activity
        android:name=".MainActivity"
        android:launchMode="singleTask"
        android:parentActivityName=".StartActivity" />
最初的设计是在用户在浏览器中按下url后,打开StartActivity,然后在用户登录时转到MainActivity

这在第一次正常工作(应用程序被终止,用户按下url)。 但当应用程序处于后台(在MainActivity中)时,在用户按下url后,它并没有通过StartActivity,而是只在MainActivity的Resume上运行


有人知道原因吗?如何确保它进入StartActivity?谢谢。

当您第一次从URL打开活动时,活动创建的so
onCreate()
方法被调用。但如果您的活动位于后台,则 将调用
onNewIntent()
,因此请重写此方法并将代码放在此处

添加以下方法:在MainActivity中

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // add your code here 

}
在舱单中:

<activity
 android:name=".MainActivity"
 android:launchMode="singleTask"
 />

如果您想要传递任何输入值,那么您可以通过Bundle传入Intent,该Bundle被接收到
onNewIntent(Intent-Intent)
,您可以像我们从Intent获取数据一样从一个活动发送到下一个活动

你能发布StartActivityChecked的代码吗?通过使用调试器,onNewIntent在MainActivity中没有被调用。我想你已经删除了android:launchMode=“singleTask”,这就是为什么它没有被调用的原因。如果你在清单中使用android:launchMode=“singleTask”,不需要在StartActivity中添加意图标志。请原谅我的错误,android:launchMode=“singleTask”在我的代码中,只是没有包含在本文中
<activity
 android:name=".MainActivity"
 android:launchMode="singleTask"
 />
Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);