2009-03-02 111 views
9

在我的程序中,它向屏幕添加了一个快捷方式。我得到的画面精美的图标,但是当我点击它,我得到:Android主屏幕快捷方式权限错误

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 

你知道这个问题?谢谢,
艾萨克

回答

9

想通了,下<activity>标签活动的增加这样的:

<intent-filter> 
<action android:name="android.intent.action.MAIN"></action> 
</intent-filter> 
+0

您能告诉我们完整(固定)的Mainfest吗? – 2009-05-10 00:17:18

2

我没有遇到这个人,但我做了一些研究,发现以下内容。

显然无论是试图调用你的应用程序,或者如果你的应用程序有一个调用来创建一个intent并启动一些intent的活动,UID是不一样的。

在ActivityManagerServer.java中有以下判断。

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

我打算做一些这方面的测试,看看我是否能重现这一在测试应用程序,并提供其他反馈。

确保您只是试图通过任何意图调用公开曝光的活动。

5

像这样的东西应该工作:

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

在清单中的活动声明中来。

10

当我不小心复制清单中某个活动的活动标记时,发生了类似的情况。我在应用程序部分有类似的东西。

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

当我删除第二个活动标签时,事情开始正常工作。

+1

这只是解决了我的错误,当我得到“应用程序未安装在此手机上”。我正在关注一本书中的一些示例,并没有注意到我的复制和粘贴问题与重复的活动。很好的接收! (甚至更好:清单中的重复活动) – 2010-12-20 17:58:46

相关问题