【问题标题】:Android homescreen shortcut permission errorAndroid主屏幕快捷方式权限错误
【发布时间】:2010-10-10 17:16:47
【问题描述】:

在我的程序中,它向屏幕添加了一个快捷方式。我在屏幕上的图标很好,但是当我点击它时,我得到:

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

你知道问题所在吗?谢谢,
艾萨克

【问题讨论】:

    标签: java android shortcut permissions homescreen


    【解决方案1】:

    当我不小心复制了清单中的一项活动的活动标签时,我遇到了类似的情况。我的应用程序部分有类似的东西。

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

    当我删除第二个活动标签时,一切都开始正常工作了。

    【讨论】:

    • 当我收到“此手机上未安装应用程序”时,这也解决了我的错误。我正在关注书中的一些示例,并没有注意到我的复制和粘贴问题与重复活动有关。不错的收获! (会更好:清单中的重复活动)
    【解决方案2】:

    想通了,在&lt;activity&gt;活动标签下添加了这个:

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

    【讨论】:

      【解决方案3】:

      这样的事情应该可以工作:

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

      在清单中的 Activity 声明中。

      【讨论】:

        【解决方案4】:

        我也遇到了这个问题,原来是因为 Activity 没有暴露给其他进程。我必须将 android:exported="true" 属性添加到清单中的活动标记中。

        更多信息请参见http://developer.android.com/guide/topics/manifest/activity-element.html#exported

        【讨论】:

          【解决方案5】:

          我个人没有遇到过这个问题,但我确实做了一些研究并发现了以下内容。

          显然,无论是试图调用您的应用程序,还是您的应用程序调用创建意图并启动某个意图的活动,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;
             }
          

          我将对此进行一些测试,看看我是否可以在测试应用程序中重现它并提供任何额外的反馈。

          确保您仅尝试通过任何意图调用公开的活动。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-09-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-03-29
            • 1970-01-01
            • 2012-03-22
            相关资源
            最近更新 更多