4

如果我的手机安装了3-4个家庭(启动器)应用程序,当我按下home键时,它会显示一个对话框来显示我手机上安装的家庭应用程序,然后我会选择一个作为默认值。我的问题是:我可以通过代码获取默认家庭应用程序的包名?

解决它,使用follow api。

public abstract int getPreferredActivities (List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName)
4

3 回答 3

9

您是否看过: 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 意图,因为很明显,您将在家中安装启动器。

没用过,但你可以用另一个标志试试,即

PackageManager.GET_INTENT_FILTERS代替

PackageManager.MATCH_DEFAULT_ONLY

最终解决方案:

API 包管理器,

public abstract int getPreferredActivities (List<IntentFilter> outFilters,List<ComponentName> outActivities, String packageName)
于 2013-04-12T06:50:25.153 回答
0

这是一个返回包含设备上所有家庭应用程序的字符串数组的方法:

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;     
}
于 2014-10-15T13:07:42.413 回答
0

这是我使用的一种方法:

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 "";
        }

    }
于 2015-03-01T14:49:17.157 回答