我想获取我当前安装的启动器的包名。我尝试使用链接https://dev59.com/l2kv5IYBdhLWcg3wxz2A,但是它返回的结果是"android"。我需要完整的启动器名称。
我想获取已安装的启动器列表以及当前选择的启动器。
提前致谢。
我想获取我当前安装的启动器的包名。我尝试使用链接https://dev59.com/l2kv5IYBdhLWcg3wxz2A,但是它返回的结果是"android"。我需要完整的启动器名称。
我想获取已安装的启动器列表以及当前选择的启动器。
提前致谢。
您可以使用以下代码获取当前的启动器包名称:
PackageManager localPackageManager = getPackageManager();
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.HOME");
String str = localPackageManager
.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)
.activityInfo
.packageName;
Log.e("Current launcher Package Name:", str);
在获取Android中每个启动器的列表问题中,Fede的回答如下:
获取所有已安装启动器的列表。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> lst = getPackageManager().queryIntentActivities(intent, 0);
if (!lst.isEmpty()) {
for (ResolveInfo resolveInfo : lst) {
Log.d("Test", "New Launcher Found: " + resolveInfo.activityInfo.packageName);
}
}
以下代码可以完美地获取当前启动器应用程序包名称。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String currentLauncherName= resolveInfo.activityInfo.packageName;
Log.d("Current Launcher: ", currentLauncherName);
val intent = Intent(Intent.ACTION_MAIN)
intent.addCategory(Intent.CATEGORY_HOME)
val resolveInfo: ResolveInfo = context.packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)?: return null
val currentLauncherPackageName: String = resolveInfo.activityInfo.packageName
val currentLauncherClassName: String = resolveInfo.activityInfo.name
两个边界情况:
结果1:安卓(当系统有多个启动器应用程序,但用户未进行默认选择时发生)
结果2:相应的包名。
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
</intent>
</queries>
com.android.settings.FallbackHome
活动作为设备上唯一安装的主页活动。