具有两个意向过滤器的活动将重新启动,但重新启动时不会调用主意图过滤器,而是调用其他意向过滤器



活动有两个意图。android.intent.action.MAINandroid.intent.action.VIEW。现在考虑应用程序崩溃的情况,然后应用程序会自动重新启动。但是重新启动时使用的意图不是主要的意图过滤器(android.intent.action.MAIN)。我想通过这个意图重新启动应用程序(android.intent.action.MAIN)。

这是我的意图活动

<activity
android:name=".login.Login"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="adjustResize"
android:launchMode="singleTask">
.....
.....

<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.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:scheme="content"
android:mimeType="application/octet-stream"
android:pathPattern=".*\.asdf"
tools:ignore="AppLinkUrlError" />
</intent-filter>
</activity>

下面是 Oncreate() 方法:

public void onCreate(Bundle savedInstanceState) {
if (getResources().getBoolean(R.bool.portrait_only)) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
super.onCreate(savedInstanceState);
Uri data = getIntent().getData();
if (data != null) {
getIntent().setData(null);
try {
importData(data);
} catch (Exception e) {
// warn user about bad data here
finish();
return;
}
}
......
.....
...
}

这是 onNewIntent()

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri data = intent.getData();
if (data != null) {
getIntent().setData(null);
try {
importData(data);
} catch (Exception e) {
// warn user about bad data here
finish();
return;
}
}
}

登录活动有两个意图过滤器,如下所示。

<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.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<data
android:scheme="content"
android:mimeType="application/octet-stream"
android:pathPattern=".*\.asdf"
tools:ignore="AppLinkUrlError" />
</intent-filter>

但是,当登录活动由第二个意图过滤器启动并且当我重新启动应用程序时,它会通过第二个意图过滤器启动。 这就是我遇到的问题,我想做的是在重新启动时使用第一个意图过滤器打开活动。

我可以通过在登录活动下的清单文件中添加以下行来解决此问题,如下所示。 行-->

android:noHistory="true"

最新更新