我创建了一个充当启动器的应用程序,它按预期工作,但我想让用户能够启动本机Android启动器.
我知道Android Launcher的包名是 com.android.launcher
但是,当我尝试通过调用从此包中获取启动意图名称时
packageManager.getLaunchIntentForPackage("com.android.launcher");
Run Code Online (Sandbox Code Playgroud)
出现无效.
所以,我不知道如何使用包名来启动它,我想知道是否有一些替代方法?
TIA
我知道Android Launcher的软件包名称是com.android.launcher
除非可能会或可能不会在任何给定的设备上.事实上,我希望它可能只占百分之几的设备.大多数制造商用他们自己的替换库存主屏幕.
我想知道是否有其他方式?
使用PackageManager和queryIntentActivities()查找支持ACTION_MAIN和支持的所有活动CATEGORY_HOME.从列表中删除您的活动.如果只剩下一个,则启动该活动.如果剩下多个,请选择自己的选择器以显示可用选项.这样,无论其他主屏幕存在,您都可以启动它.
UPDATE
给定ResolveInfo命名launchable和ACTION_MAIN/ CATEGORY_HOME模板Intent命名i,以启动该活动,执行:
ActivityInfo activity=launchable.activityInfo;
ComponentName name=new ComponentName(activity.applicationInfo.packageName,
activity.name);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
i.setComponent(name);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3998 次 |
| 最近记录: |