Solve SecurityException: Permission Denial: starting Intent. What permission do I need?

匿名 (未验证) 提交于 2019-12-03 01:39:01

问题:

I want to open the play store from app. It's fine in Samsung, but it failed in OnePlus mobile. I don't know where does the alibaba come from. It's strange.

Exception java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW dat=http://play.google.com/... cmp=com.alibaba.intl.android.apps.poseidon/com.alibaba.android.intl.weex.activity.WeexPageActivity } from ProcessRecord{a1dd30c 15827:a2bliving.ie.a2b/u0a151} (pid=15827, uid=10151) not exported from uid 10156

Code:

private static final String PLAY_STORE_LINK = "http://play.google.com/store/apps/details?id=%s&hl=en";  public void openUpdateLink() {         context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getExternalAppLink())));     }   public String getExternalAppLink() {         return String.format(PLAY_STORE_LINK, context.getPackageName());     }

回答1:

You need to set android:exported="true" in your AndroidManifest.xml file

<activity     android:name="com.anurag.example.MainActivity"     android:label="Demo"      android:exported="true">     <intent-filter>         <action android:name="android.intent.action.MAIN" >         </action>     </intent-filter> </activity>


回答2:

On that device, that Intent is getting modified to add a specific component (com.alibaba.intl.android.apps.poseidon/com.alibaba.android.intl.weex.activity.WeexPageActivity). I do not know if that is from the system chooser or something else. And, the activity that it resolves to is not exported.

So, mostly, this is a bug in that device.

However, since the activity is not exported, there is nothing you can do to start that specific activity.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!