2010-09-18 23 views
2

我試圖刪除使用contentResolver.delete()的書籤,並且因爲缺少權限而關閉了「com.android.broswer.permission.WRITE_HISTORY_BOOKMARKS「,但它在清單...Android:強制關閉缺少權限,位於清單中

這是清單(外<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) 

任何想法,爲什麼它說,拒絕許可時,它顯然在清單?也許我的代碼是問題?

回答

2

你檢查this

它說以下

凡是在com.android。*包是一個私有API,你不應該 依賴於它,因爲它可能在未來的突破更新。

公共事物是(通常)android。*(減去前導com) 並在SDK文檔中描述。

+0

是的,但對於Froyo以外的操作系統版本,我正在使用Froyo 2.2 SDK 8 ...讀取權限的工作原理...因此,奇怪的是WRITE不是。 :\ – 2010-09-18 10:49:15

+0

此外,我的添加書籤功能很好......我想它使用WRITE權限。 – 2010-09-18 10:50:42

+0

可能是因爲任何應用程序都不能刪除存儲在瀏覽器中的書籤,所以Android可能已經阻止了爲第三方應用程序添加書籤的寫權限。一些安全約束。然而,閱讀或甚至添加新的書籤不會有太大的傷害...... – DeRagan 2010-09-18 11:02:29

1

OMG!對不起,我的錯誤!

它應該是瀏覽器:0)

浪費了我的整個週末,一個錯字...

BTW: 僅在Android 2.2的支持。

0

此外,請檢查您輸入的是uses-permission而不是uses-permissions(單數)。

像這樣的微妙變化可能會毀了你的週末。

相關問題