在客制化Bookmarks 书签时出现如下错误:
01-01 12:39:44.147 5450 5464 E DatabaseUtils: Writing exception to parcel
01-01 12:39:44.147 5450 5464 E DatabaseUtils: java.lang.SecurityException: Neither user 10068 nor current process has android.permission.READ_PHONE_STATE.
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.os.Parcel.createException(Parcel.java:1950)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.os.Parcel.readException(Parcel.java:1918)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.os.Parcel.readException(Parcel.java:1868)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at com.android.internal.telephony.ICarrierConfigLoader$Stub$Proxy.getConfigForSubId(ICarrierConfigLoader.java:123)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.telephony.CarrierConfigManager.getConfigForSubId(CarrierConfigManager.java:2756)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at com.android.providers.partnerbookmarks.PartnerBookmarksProvider$DatabaseHelper.prepareForConfiguration(PartnerBookmarksProvider.java:186)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at com.android.providers.partnerbookmarks.PartnerBookmarksProvider.query(PartnerBookmarksProvider.java:455)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.content.ContentProvider.query(ContentProvider.java:1060)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.content.ContentProvider.query(ContentProvider.java:1152)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.content.ContentProvider$Transport.query(ContentProvider.java:241)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:102)
01-01 12:39:44.147 5450 5464 E DatabaseUtils: at android.os.Binder.execTransact(Binder.java:731)
01-01 12:39:44.151 539 539 I ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
--------- beginning of crash
01-01 12:39:44.158 5244 5269 E AndroidRuntime: FATAL EXCEPTION: CrAsyncTask #1
01-01 12:39:44.158 5244 5269 E AndroidRuntime: Process: com.android.chrome, PID: 5244
01-01 12:39:44.158 5244 5269 E AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground()
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at aCu.done(SourceFile:15)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:271)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at java.lang.Thread.run(Thread.java:764)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: Caused by: java.lang.SecurityException: Neither user 10068 nor current process has android.permission.READ_PHONE_STATE.
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.os.Parcel.createException(Parcel.java:1950)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.os.Parcel.readException(Parcel.java:1918)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.content.ContentProviderProxy.query(ContentProviderNative.java:418)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:804)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:753)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at android.content.ContentResolver.query(ContentResolver.java:711)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at bvL.b(SourceFile:2)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at org.chromium.chrome.browser.AppHooks.u(SourceFile:39)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at aEw.u(SourceFile:72)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at bvO.d(SourceFile:8)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at bvO.a(SourceFile:82)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at aCt.call(SourceFile:7)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:266)
01-01 12:39:44.158 5244 5269 E AndroidRuntime: ... 3 more
需要在AndroidManifest中配置权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.providers.partnerbookmarks">
+ <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- We add an application tag here just to indicate the authorities -->
<application>
<provider android:name="PartnerBookmarksProvider"
android:authorities="com.android.partnerbookmarks"
android:exported="true" />
</application>
</manifest>
此外,出现的SecurityException问题,还需要在Android.mk中进行平台签名:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
+LOCAL_CERTIFICATE := platform
LOCAL_STATIC_JAVA_LIBRARIES := android-common
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := PartnerBookmarksProvider
LOCAL_SDK_VERSION := current
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
include $(BUILD_PACKAGE)
# additionally, build tests in sub-folders in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))