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

允我心安 提交于 2019-12-23 09:04:20

问题


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.



来源:https://stackoverflow.com/questions/41963980/solve-securityexception-permission-denial-starting-intent-what-permission-do

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