Android homescreen shortcut permission error

2019-04-21 10:49发布

In my program it adds a shortcut to the screen. I get the icon on the screen fine, but when I tap it, I get:

03-01 20:00:29.410: ERROR/AndroidRuntime(796): java.lang.SecurityException: Permission Denial: starting Intent { data=http://www.example.com/ flags=0x14000000 comp={com.isaacwaller.example/com.isaacwaller.example.ExampleCut} } from ProcessRecord{435c7398 796:android.process.acore/10005} (pid=796, uid=10005) requires null

Do you know the problem? Thanks,
Isaac

5条回答
Luminary・发光体
2楼-- · 2019-04-21 11:13

I haven't run into this personally but I did do some research and found the following.

Apparently whatever is attempting to invoke your app or if your app has a call to create an intent and start an activity of some intent the UID is not the same.

In ActivityManagerServer.java there are below judgement in it.

int checkComponentPermission(String permission, int pid, int uid, int reqUid)
// If the target requires a specific UID, always fail for others.
   if (reqUid >= 0 && uid != reqUid) {
       return PackageManager.PERMISSION_DENIED;
   }

I'm going to do some testing on this and see if I can reproduce this in a test application and provide any additional feedback.

Make sure you are only trying to invoke publicly exposed activities through any intents.

查看更多
smile是对你的礼貌
3楼-- · 2019-04-21 11:15

I ran into this problem too, and it turned out it was because the Activity wasn't exposed to other processes. I had to add the android:exported="true" attribute to the activity tag in my manifest.

See http://developer.android.com/guide/topics/manifest/activity-element.html#exported for more information.

查看更多
混吃等死
4楼-- · 2019-04-21 11:28

Something like this should work:

<intent-filter>
    <action android:name="com.example.Project.Action"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter> 

inside of the Activity declaration in the manifest.

查看更多
5楼-- · 2019-04-21 11:31

Figured it out, added this under <activity> tag of activity:

<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
</intent-filter>
查看更多
Melony?
6楼-- · 2019-04-21 11:32

I had something like this happen when I had accidentally duplicated the activity tag for one of my activities in my manifest. I had something like this in my application section.

<activity android:name=".ConventionHome" android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name="ConventionHome"></activity>

When I removed the second activity tag, things started working normally.

查看更多
登录 后发表回答