一项活动有两个目的。 android.intent.action.MAIN
和android.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;
}
}
}
答案 0 :(得分:0)
登录活动具有以下两个意图过滤器。
<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>
但是,当第二个意图过滤器启动Login Activity并重新启动应用程序时,它将通过第二个意图过滤器启动。那是我遇到的问题,我想做的就是在活动重新启动时使用第一个intent过滤器打开活动。
我可以通过在登录Activity`下的清单文件中添加以下行来解决此问题,如下所示。 行->
android:noHistory="true"