是否可以检测是否从adb启动了应用程序?

时间:2016-02-07 09:08:22

标签: android adb

我开发了一个Android应用程序,如果应用程序是从adb启动的话我想执行某个功能。 当从设备启动应用程序时,将不执行此功能。

UPDATE 我使用下面的代码

        if ((Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) != 0) {
        PluginResult.Status status = PluginResult.Status.OK;
        String result = "";
        result = "ok";
        return new PluginResult(status, result);
        } 

        if ((Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) == 0) {
        PluginResult.Status status = PluginResult.Status.ERROR;
        String result = "";
        result = "error";
        return new PluginResult(status, result);
        }

但我收到的确很好。

我哪里错了?

2 个答案:

答案 0 :(得分:0)

从操作系统启动应用

  1. 首先,如果您从启动器图标启动应用程序,则Intent包含CATEGORY“android.intent.category.LAUNCHER”。
  2. 当您通过启动器图标启动时,会设置Intent标志FLAG_ACTIVITY_RESET_TASK_IF_NEEDED(0x200000)。
  3. 来自亚行的App Lauch:

    1. adb shell案例不是。(adb shell am start -n com.package.name/com.package.name.ActivityName)
    2. 在adb shell案例中,FLAG_ACTIVITY_RESET_TASK_IF_NEEDED不是。
    3. 这将解决你的问题。所有最好的

答案 1 :(得分:0)

Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED是一个位掩码和常量。检查标志是否设置的正确方法是:

if ((intent.getFlags() & Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED) != 0) {
...