Zee*_*bAs 6 android launcher package-managers homescreen
嗨已经2天寻找这个简单的问题了.我想从我的应用程序启动Android自己的启动器,如果它没有设置为默认值.
final PackageManager packageManager=getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage("com.android.launcher");
Run Code Online (Sandbox Code Playgroud)
这为Android自己的启动器返回null但是如果我尝试自定义启动器就会成功给我
Pal*_*ani 12
在研究了getLaunchIntentForPackage的源代码之后找到了解决方案.根据文件,
当前实现将首先查看CATEGORY_INFO类别中的主要活动,然后查看CATEGORY_LAUNCHER类别中的主要活动,或者如果两者都未找到则返回null.
所以,该函数不寻找CATEGORY_HOME,我用以下方式重写它,它工作得很好.
Intent intentToResolve = new Intent(Intent.ACTION_MAIN);
intentToResolve.addCategory(Intent.CATEGORY_HOME);
intentToResolve.setPackage("com.android.launcher");
ResolveInfo ri = getPackageManager().resolveActivity(intentToResolve, 0);
if (ri != null)
{
Intent intent = new Intent(intentToResolve);
intent.setClassName(ri.activityInfo.applicationInfo.packageName, ri.activityInfo.name);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5960 次 |
| 最近记录: |