如何在Java中以编程方式获取android 2.3及以上版本的当前启动程序的包名?
答案 0 :(得分:62)
我认为你应该能够使用PackageManager.resolveActivity()和家庭意图。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String currentHomePackage = resolveInfo.activityInfo.packageName;
答案 1 :(得分:0)
通常I agree to @JesusFreke使用PM resolveActivity
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
但是要获取正确的软件包名称,您应该使用
resolveInfo.loadLabel(packageManager).toString()
或
resolveInfo.activityInfo.applicationInfo.loadLabel(packageManager).toString()
提示: 如果没有默认设置,则对于一般的System Intent Receiver,它可能会变成“ Android系统”或“打开”
提示:
如果您正在寻找Web浏览器,则即使没有一个显式设置,也可以使用net.openid.appauth.browser.BrowserSelector#select()
(0.7.1+)隐式获取默认浏览器。