解决SecurityException:Permission Denial:启动Intent。我需要什么许可?

时间:2017-01-31 17:36:10

标签: java android android-intent

我想从应用程序打开游戏商店。它在三星很好,但它在OnePlus手机中失败了。 我不知道 alibaba 来自哪里。这很奇怪。

异常java.lang.SecurityException:权限拒绝:启动Intent {act = android.intent.action.VIEW dat = http://play.google.com/ ... cmp = com.alibaba.intl.android.apps。来自ProcessRecord {a1dd30c 15827:a2bliving.ie.a2b / u0a151}(pid = 15827,uid = 10151)的poseidon / com.alibaba.android.intl.weex.activity.WeexPageActivity}未从uid 10156导出

代码:

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());
    }

3 个答案:

答案 0 :(得分:2)

您需要在AndroidManifest.xml文件中设置android:exported="true"

<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>

答案 1 :(得分:1)

这不是您的应用程序中的错误,而是阿里巴巴应用程序中的错误。发生的事情是他们声明了他们的活动 WeexPageActivity 来处理 http/https/file 方案,但也没有将其导出。因此,每次您的应用尝试使用这些方案之一启动 Intent 并且选择了阿里巴巴应用或更糟的是,它被设置为默认应用时,您的应用就会崩溃。

例如,如果您使用 AdMob,每次用户点击广告时都会发生这种情况(对我来说,最新的罪魁祸首应用是 mxtech.videoplayer.ActivityWebBrowser)。

老实说,我不知道为什么 Android 不忽略所述活动而不是崩溃,或者为什么其他开发人员会犯所述错误,但这不是您的错。

答案 2 :(得分:0)

在该设备上,Intent被修改为添加特定组件(com.alibaba.intl.android.apps.poseidon/com.alibaba.android.intl.weex.activity.WeexPageActivity)。我不知道这是来自系统选择器还是其他东西。而且,它解析的活动不会被导出。

所以,大多数情况下,这是该设备中的一个错误。

但是,由于未导出活动,因此无法启动该特定活动。