这个问题是从如何关闭或停止我在 Android 中启动的外部应用程序中提出的建议衍生而来的。
我正在编写一个 Android 应用程序,它是工业过程的远程控制 - 该过程在与我的 Android 应用程序持续通信的 PC 上运行,有时 PC 会向 Android 发送 PDF 文件,然后我启动 AdobeReader。 apk 来显示它。当 PC 关闭图像时,我想在 Android 上关闭它。
在上面的链接中,有人告诉我,一旦启动 AdobeReader,就无法从我的代码中将其关闭。 但是,我也许可以将我的应用程序重新放在前面,这对我的目的同样有益。但我无法让它工作。我的应用程序的主要活动是 RemoteControlActivity,我尝试过:
try {
Intent i = new Intent(ctx, RemoteControlActivity.class);
ctx.startActivity(i);
}
catch (ActivityNotFoundException e) {
Log.d("ShowButtons(normal)", "Hide");
}
我还尝试使用Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT |的各种组合在startActivity( ) 调用之前添加一个intent.setFlags(...) Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_FROM_BACKGROUND没有运气。
在清单中,remoteControlActivity 的启动模式是singleTask
在调试器中,StartActivity()被调用而不登陆 Catch 子句,但我没有在 RemoteControlActivity 的 onRestart 或 onResume 处理程序中遇到断点。
提前致谢!
编辑: 下面的答案建议了一个不同的标志,所以我尝试了它:
try {
Intent i = new Intent(ctx, RemoteControlActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
ctx.startActivity(i);
}
catch (ActivityNotFoundException e) {
Log.d("ShowButtons(normal)", "Hide");
}
...但没有运气 - 在调试器中它调用 startActivity,不会落在 catch 块中,但什么也没发生。
进一步编辑:我被要求提供清单;这是主要活动的部分:
<activity android:launchMode="singleTask"
android:label="@string/app_name"
android:windowNoTitle="false"
android:configChanges="orientation"
android:screenOrientation="landscape"
android:name="RemoteControlActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>