代码之家  ›  专栏  ›  技术社区  ›  maciejka

Android应用程序运行其他应用程序并返回主应用程序

  •  0
  • maciejka  · 技术社区  · 6 年前

    我在mainActivity类中定义了单击某个按钮后的以下操作。

    mSynchronizeData.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(mBluetoothAdapter.isEnabled()){
                String packageName = "com.veryfit2hr.second";
                Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
                ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
                startActivity(intent);
                SystemClock.sleep(15000);
            }
        }
    });
    

    当其他应用程序正在打开时,我想在定义的15秒延迟后返回到previos应用程序?我试过了 MainActivity.super.onBackPressed(); 我没工作。有什么想法吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Danny Buonocore DTM    6 年前

    你可以打电话给 finish() 方法对正在启动的新活动,并对其延迟15秒。从文档中:

    当您的活动完成并且应该关闭时,调用此命令。ActivityResult将通过onActivityResult()传播回启动您的人。

        2
  •  0
  •   Russell Cullen    6 年前

    如果你拥有新的活动,你可以简单地调用 finish() 在创建后的期望时间之后。但是,如果您不这样做,一个解决方案是在之前启动的活动的基础上,在15秒后启动自己的活动。

    一般来说,我建议不要使用这种模式,因为用户在应用程序之间随机启动是非常令人困惑的,但这是一种可行的实现方式。

    而不是通过调用 SystemClock.sleep(15000); ,您需要将呼叫安排在15秒后进行。我们可以利用 Handler 为了这个。

    Handler handler = new Handler(Looper.getMainLooper())
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
             Intent intent = // Create intent for your activity here
             startActivity(intent)
        }
    }, 15000);