如何判断启动Android应用的内容?具体来说,我希望能够确定该应用程序是否是由Android Studio启动的 - 无论是正常模式还是调试模式 - 然后显示一些其他菜单选项。
感谢。
答案 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启动应用程序的方式。
然后编辑启动标志,添加自定义额外功能。语法为-e CustomExtraName CustomExtraValue
。在这里,我添加了-e ANDROID_STUDIO true
。
您可以使用自定义类别实现相同的功能。语法将为-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中选择正确的Build Variant!