如果我的手机安装了3-4个家庭(启动器)应用程序,当我按下home键时,它会显示一个对话框,显示我手机上安装的家庭应用程序,然后我会选择一个,因为default.My问题是:我可以通过代码获得默认家庭应用程序的包名吗?
解决它,使用下面的api。
public abstract int getPreferredActivities (List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName)发布于 2013-04-12 14:50:25
你有没有看过:PackageManager.resolveActivity()
Intent intent= new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo defaultLauncher= getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String nameOfLauncherPkg= defaultLauncher.activityInfo.packageName;请确保您使用home intent,因为很明显,您将在HOME上安装启动器。
尚未使用,但您可以使用另一个标志进行尝试。
PackageManager.GET_INTENT_FILTERS代替
PackageManager.MATCH_DEFAULT_ONLY最终解决方案:
接口packageManager,
public abstract int getPreferredActivities (List<IntentFilter> outFilters,List<ComponentName> outActivities, String packageName)发布于 2014-10-15 21:07:42
这是一个返回字符串数组的方法,它包含设备上的所有家庭应用程序:
public String[] getDefaultLauncherList() {
final Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
final List<ResolveInfo> list = ((PackageManager)getPackageManager()).queryIntentActivities(intent, 0);
String[] toReturn=new String[list.size()];
for(int i=0;i<list.size();i++)
toReturn[i]=list.get(i).activityInfo.packageName;
return toReturn;
}发布于 2015-03-01 22:49:17
这是我使用的方法:
private String nameOfHomeApp()
{
try {
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
PackageManager pm = getPackageManager();
final ResolveInfo mInfo = pm.resolveActivity(i, PackageManager.MATCH_DEFAULT_ONLY);
return mInfo.activityInfo.packageName;
}
catch(Exception e)
{
return "";
}
}https://stackoverflow.com/questions/15964550
复制相似问题