如何在Java中以编程方式获取android 2.3及更高版本中当前启动程序的包名?
我认为你应该能够使用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;
一般来说,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()
提示:如果没有默认设置,这可能会成为“Android系统”或“打开”,如同一般系统意图接收器
提示:如果您正在寻找Web浏览器,您可以使用net.openid.appauth.browser.BrowserSelector#select()
(0.7.1+)隐式获取默认浏览器,即使没有一个显式设置。