确定什么启动Android应用程序

时间:2016-09-30 12:37:01

标签: android

如何判断启动Android应用的内容?具体来说,我希望能够确定该应用程序是否是由Android Studio启动的 - 无论是正常模式还是调试模式 - 然后显示一些其他菜单选项。

感谢。

2 个答案:

答案 0 :(得分:2)

简短回答

在Android Studio上的“运行”配置中添加自定义额外内容,并检查其在您的意图附加内容中的存在。

详细说明

默认情况下,Android Studio会像任何启动器一样启动应用程序:

adb shell am start -n "fr.enoent.customextrasample/fr.enoent.customextrasample.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

但是你有办法传递额外的价值观。首先,让我们在我们的活动中添加日志:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        for (String category : getIntent().getCategories()) {
            Log.d("Category", category);
        }

        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            for (String key : extras.keySet()) {
                Log.d("Extra", key + ": " + extras.get(key));
            }
        }
    }
}

在Android Studio中运行时:

D/Category: android.intent.category.LAUNCHER

从启动器运行时:

D/Category: android.intent.category.LAUNCHER
D/Extra: profile: 0

可能与profile额外有关,但我不会依赖它。它可能与Android的多用户功能有关,并且可能不会每次都在那里。

但是可以改变Android Studio启动应用程序的方式。

打开“运行配置”对话框: How to open Run configuration dialog

然后编辑启动标志,添加自定义额外功能。语法为-e CustomExtraName CustomExtraValue。在这里,我添加了-e ANDROID_STUDIO trueEdited run configuration 您可以使用自定义类别实现相同的功能。语法将为-c YourCustomCategory。您可以混合和匹配自定义类别,多个附加内容......详细的am文档可用here

返回我们的申请。让我们通过Android Studio再次运行它:

D/Category: android.intent.category.LAUNCHER
D/Extra: ANDROID_STUDIO: true

来自发射器:

D/Category: android.intent.category.LAUNCHER
D/Extra: profile: 0

万岁!

现在,您可以轻松地检查您的应用是否已从Android Studio或其他内容启动:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    if (extras.containsKey("ANDROID_STUDIO")) {
        Log.d("Start", "Ran from Android Studio");
    } else {
        Log.d("Start", "Ran from something else");
    }
}

答案 1 :(得分:1)

在Android Studio中,您可以使用

BuildConfig.DEBUG确定您的应用是调试还是发布!

if(BuildConfig.DEBUG){
  Log.d(TAG, "debug")
}
else{
  Log.d(TAG, "release")
}

注意:请确保从Build Variants中选择正确的Bui​​ld Variant!