Android:由于缺少权限而强制关闭,该权限位于清单中

时间:2010-09-18 10:12:59

标签: android android-manifest

我正在尝试使用contentResolver.delete()删除书签,并且因为缺少权限“ com.android.broswer.permission.WRITE_HISTORY_BOOKMARKS ”而强行关闭,但它在清单中...

这是在清单中(<application></application>之外)

<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"></uses-permission>
    <uses-permission android:name="com.android.broswer.permission.WRITE_HISTORY_BOOKMARKS"></uses-permission>

这是方法:

public void deleteBookmark(Cursor cur, long id) {
        getContentResolver().delete(BOOKMARKS_URI, "_id = " + id, null);
    }

(忽略未使用的光标)

,这是logcat:

E/AndroidRuntime(26750): FATAL EXCEPTION: main
E/AndroidRuntime(26750): java.lang.SecurityException: Permission Denial: writing
 com.android.browser.BrowserProvider uri content://browser/bookmarks from pid=26
750, uid=10001 requires com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
E/AndroidRuntime(26750):        at android.os.Parcel.readException(Parcel.java:1
260)
E/AndroidRuntime(26750):        at android.database.DatabaseUtils.readExceptionF
romParcel(DatabaseUtils.java:160)
E/AndroidRuntime(26750):        at android.database.DatabaseUtils.readExceptionF
romParcel(DatabaseUtils.java:114)
E/AndroidRuntime(26750):        at android.content.ContentProviderProxy.delete(C
ontentProviderNative.java:472)
E/AndroidRuntime(26750):        at android.content.ContentResolver.delete(Conten
tResolver.java:675)
E/AndroidRuntime(26750):        at com.deleteBookmark(.java:167)
E/AndroidRuntime(26750):        at com.onContextItemSe
lected(.java:138)
E/AndroidRuntime(26750):        at android.app.Activity.onMenuItemSelected(Activ
ity.java:2199)
E/AndroidRuntime(26750):        at com.android.internal.policy.impl.PhoneWindow$
ContextMenuCallback.onMenuItemSelected(PhoneWindow.java:2744)
E/AndroidRuntime(26750):        at com.android.internal.view.menu.MenuItemImpl.i
nvoke(MenuItemImpl.java:143)
E/AndroidRuntime(26750):        at com.android.internal.view.menu.MenuBuilder.pe
rformItemAction(MenuBuilder.java:855)
E/AndroidRuntime(26750):        at com.android.internal.view.menu.MenuDialogHelp
er.onClick(MenuDialogHelper.java:137)
E/AndroidRuntime(26750):        at com.android.internal.app.AlertController$Aler
tParams$3.onItemClick(AlertController.java:875)
E/AndroidRuntime(26750):        at android.widget.AdapterView.performItemClick(A
dapterView.java:284)
E/AndroidRuntime(26750):        at android.widget.ListView.performItemClick(List
View.java:3382)
E/AndroidRuntime(26750):        at android.widget.AbsListView$PerformClick.run(A
bsListView.java:1696)
E/AndroidRuntime(26750):        at android.os.Handler.handleCallback(Handler.jav
a:587)
E/AndroidRuntime(26750):        at android.os.Handler.dispatchMessage(Handler.ja
va:92)
E/AndroidRuntime(26750):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(26750):        at android.app.ActivityThread.main(ActivityThrea
d.java:4627)
E/AndroidRuntime(26750):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime(26750):        at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime(26750):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(26750):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:626)
E/AndroidRuntime(26750):        at dalvik.system.NativeStart.main(Native Method)

知道为什么它会在清单中明确表示拒绝权限?也许我的代码是问题?

3 个答案:

答案 0 :(得分:2)

您是否检查过this帖子

它说以下

com.android。*包中的任何内容都是私有API,您不应该这样做 依赖它,因为它可能在未来的更新中中断。

公开的东西(通常)是android。*(减去领先的com。) 并在SDK文档中进行了描述。

答案 1 :(得分:1)

OMG!对不起,我的错!

它应该是BROWSER:0)

我整个周末浪费了一个错字......

顺便说一句: 仅在Android 2.2中受支持。

答案 2 :(得分:0)

同时检查您是否输入了uses-permission而非uses-permissions(单数)。

这样的微妙变化可能会毁了你的周末。