权限拒绝:...需要android.permission.WRITE_EXTERNAL_STORAGE

权限拒绝:...需要android.permission.WRITE_EXTERNAL_STORAGE

问题描述:

因此,我打的最新的墙壁是试图用我的程序写入SD卡。我越来越:权限拒绝:...需要android.permission.WRITE_EXTERNAL_STORAGE

[2011-05-28 10:00:16 - LatinDictionary] ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.joelman.latindictionary/.LatinDictionary } from null (pid=-1, uid=-1) requires android.permission.WRITE_EXTERNAL_STORAGE 

正如你可以从下面我看到清单,我添加的权限(我也试着将它添加到每一项活动中,都无济于事)。我错过了什么?

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.joelman.latindictionary" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:permission="android.permission.WRITE_EXTERNAL_STORAGE"> 
    <activity android:name=".LatinDictionary"> 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN"></action> 
<category android:name="android.intent.category.LAUNCHER"></category> 
</intent-filter> 
<intent-filter><action android:name="android.intent.action.SEARCH"></action> 
</intent-filter> 
</activity> 

<provider android:name="DictionaryProvider" android:authorities="com.joelman.latindictionary.DictionaryProvider"></provider> 
</application> 

</manifest> 

TIA, 乔尔

把应用程序标记外的许可行,但内部的舱单一个

+0

这应该是正确的回答。另外,请注意,新的Android SDK版本包含一个'lint'工具,可以提前找到这类错误。 – 2012-01-10 03:16:01

它应该是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.joelman.latindictionary" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" android:permission="android.permission.WRITE_EXTERNAL_STORAGE"> 
    <activity android:name=".LatinDictionary"> 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN"></action> 
<category android:name="android.intent.category.LAUNCHER"></category> 
</intent-filter> 
<intent-filter><action android:name="android.intent.action.SEARCH"></action> 
</intent-filter> 
</activity> 

<provider android:name="DictionaryProvider" android:authorities="com.joelman.latindictionary.DictionaryProvider"></provider> 
</application> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 
</manifest> 
+2

谢谢!注意:我还必须从节点中删除权限才能运行。 – user568259 2011-05-28 22:43:44

+3

??两者有什么区别? 已被移动,但它最初位于元素内,而不在元素内,所以为什么顺序或和问题(在xml中)? – Ribo 2013-09-25 21:41:06

+0

我把它放在''标签之外 - 但它在文件的开头。将权限移动到_ <_ application _>标签之后使其可以正常工作。 – 2016-05-19 20:33:36