【问题标题】:How to perform back button action in another app?如何在另一个应用程序中执行后退按钮操作?
【发布时间】:2014-02-16 14:04:35
【问题描述】:

我想要简单的应用程序在当前可见活动中从堆栈中终止活动...如何实现应用程序以在后台运行并关闭正在运行的应用程序中的活动?

【问题讨论】:

  • 您的用例是什么?我想不出这样做的理由,这还不错。但无论如何,谢天谢地,Android 不会让你这样做。
  • 你不能。如果您有更好的方法提交补丁,Android 会管理活动。
  • 如果其中一个答案为您指明了正确的方向,请立即将其标记为已接受的答案,谢谢
  • 这不是我的问题的解决方案,因为我想在 facebook 等其他应用程序中删除堆栈中最高的活动。我有packageName,topActiivty,但无法从堆栈中删除活动以降低一级...我知道只能执行系统本身,但我希望发送一个意图或信号来杀死堆栈上的最高活动.

标签: java android back-button pid


【解决方案1】:

假设这些是您自己的活动,您需要对要关闭的活动声明一个操作,然后从其他应用调用该操作。关闭活动将在 onNewIntent() 中收到通知,您可以在其中检查操作并调用完成

在可关闭的活动中:

   @Override
   protected void onNewIntent(Intent intent) {
       super.onNewIntent(intent);
       if ("action.action.myactionstring".equals(intent.getAction())) {
           finish();
       }
   }

在可关闭的活动 mainfest

   <activity android:name=".CloseableActivity" >
        <intent-filter>
            <action android:name="action.action.myactionstring" />
            ...
        </intent-filter>
   </activity>

在其他活动中

    Intent intent = new Intent("action string");
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);

【讨论】:

  • 请记住,您需要使用FLAG_ACTIVITY_SINGLE_TOP 启动目标活动才能调用onNewIntent()
  • 谢谢,但我只有一个应用程序。我想在其他应用程序中执行返回按钮操作
  • 你不能影响另一个应用程序,如果它在同一个后台/任务上,那么也许你可以 clear_top 或类似的(我没有完全清楚所有的标志),但它会在这是自己的任务,您永远不能直接调用后退按钮并导致其他应用程序接收 onBackPressed
【解决方案2】:

你试过 finish(); 命令吗? More Info

【讨论】:

  • 完成...是的,但是如何在知道包名称甚至不是我的应用程序的顶级活动的情况下执行它。我只想向其他应用程序发送信号以关闭最高活动从堆栈 - 不清除整个堆栈,只需从顶部取下一个。
猜你喜欢
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 2015-02-27
相关资源
最近更新 更多