解决SecurityException:权限被拒绝:启动Intent。我需要什么许可?

Mia*_*ong 5 java android android-intent

我想从应用程序打开Play商店。在三星中还可以,但在OnePlus移动版中却失败了。我不知道阿里巴巴来自哪里。真奇怪。

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

码:

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());
    }
Run Code Online (Sandbox Code Playgroud)

Com*_*are 6

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

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

但是,由于活动未导出,因此您无法执行任何操作来启动该特定活动。

  • @CommonsWare我已经通过设置更具体的意图类型解决了这个问题 (2认同)

小智 5

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

<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>
Run Code Online (Sandbox Code Playgroud)

  • @AnuragAggarwal:苗益冲不是`com.alibaba.intl.android.apps.poseidon/com.alibaba.android.i‌ntl.weex.activity.We‌ exPageActivity`的开发者。即未导出并触发此异常的活动。 (4认同)