我正在创建一个应用程序,需要能够在用户打开的应用程序之间切换(例如,多任务菜单中的应用程序)我已经获得了10个最新应用程序中的ComponentName
个,并且可以启动它们(即切换到它们),如下所示:
intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(info);
startActivity(intent);
然而,当我尝试更改为Facebook(可能还有一些类似的应用程序)时,它会请求特定权限:
java.lang.SecurityException:Permission Denial:从ProcessRecord {42310bc0 8578:com.javanut13.multitaskheads / u0a10095}启动Intent {flg = 0x10000000 cmp = com.facebook.katana / .activity.FbFragmentChromeActivity}(pid = 8578, uid = 10095)需要 com.facebook.permission.prod.FB_APP_COMMUNICATION
通过实际切换到应用程序,而不是启动应用程序,有没有办法解决这个问题?我可以简单地将焦点发送到其他应用程序吗?
答案 0 :(得分:0)
除非您拥有权限,否则我认为您只能在其“已导出”属性设置为true时启动其他应用程序的活动。类似Facebook的应用可能会将此设置为false,并且不允许其他应用访问其活动。
我自己没有对此进行测试,但您可以尝试以下代码:
Intent extApp= getPackageManager().getLaunchIntentForPackage(facebook-package-name);
this.startActivity(extApp);
希望这有帮助。
参考: