如何获得Android系统默认的家庭应用程序的名称

时间:2013-04-12 06:29:07

标签: android

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

解决它,使用follow api。

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

3 个答案:

答案 0 :(得分:8)

你有没看过: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 packageManager,

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

答案 1 :(得分: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;     
}

答案 2 :(得分: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 "";
        }

    }