編輯:關於Android編程
這是因為非系統應用無法擁有android.permission.ACCESS_DOWNLOAD_MANAGER權限,而在DownloadProvider的insert函數中會調用checkInsertPermissions檢查數據庫操作權限,如下:
private void checkInsertPermissions(ContentValues values) {
if (getContext().checkCallingOrSelfPermission(Downloads.Impl.PERMISSION_ACCESS)
== PackageManager.PERMISSION_GRANTED) {
return;
}
getContext().enforceCallingOrSelfPermission(android.Manifest.permission.INTERNET,
"INTERNET permission is required to use the download manager");
// ensure the request fits within the bounds of a public API request
// first copy so we can remove values
values = new ContentValues(values);
// check columns whose values are restricted
enforceAllowedValues(values, Downloads.Impl.COLUMN_IS_PUBLIC_API, Boolean.TRUE);
……
}
解決方案:
【方法一】將Google Play Store放回系統應用區,不做可卸載處理。這樣雖然簡單,卻沒有實現客戶需求。
【方法二】修改PackageManagerService源碼,對Google Play Store做特殊處理,直接給予權限:
--- a/frameworks/base/services/java/com/android/server/pm/PackageManagerService.java
+++ b/frameworks/base/services/java/com/android/server/pm/PackageManagerService.java
@@ -5938,7 +5938,12 @@ public class PackageManagerService extends IPackageManager.Stub {
+ ")");
}
}
+ // TChip ZJ Add START:for Phoneshy Permission
+ if (pkg.packageName.equals("com.android.vending")){
+ allowed = true;
+ }
+ // TChip ZJ Add END
}
if ((changedPermission || replace) && !ps.permissionsFixed &&
!isSystemApp(ps) || isUpdatedSystemApp(ps)){
如何打開手機USB連接刷機精靈
如何打開手機USB連接刷機精靈,有時我們插入電腦,刷機精靈老是顯示叫我打開USB接口,連接。可不知道在哪裡設置。想刷機都刷機不了。現在小編來告訴怎麼打開US
將 Android* x86 NDK 用於 Eclipse* 並移植 NDK 示例應用
目標 面向 Eclipse (ADT) 的 Android 插件現在支持基於 NDK 的應用開發。 其可自動生成項目和構件文件以及代碼存根,並可集成到整個 Andro
[Android L]解除SwitchPreference與Preference的綁定事件
需求描述默認情況,Android的兩個控件SwitchPreference和CheckBoxPreference的事件處理是和Preference整個區域的事件綁定在一起
融雲&高德地圖-實現地理位置發送
效果預覽Send:Click LocationMessage: 實現1:注冊高德地圖開發者賬號,創建應用、獲取高德地圖的 appkey2: jar 包建議直接從 融雲