編輯:關於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接口,連接。可不知道在哪裡設置。想刷機都刷機不了。現在小編來告訴怎麼打開US
目標 面向 Eclipse (ADT) 的 Android 插件現在支持基於 NDK 的應用開發。 其可自動生成項目和構件文件以及代碼存根,並可集成到整個 Andro
需求描述默認情況,Android的兩個控件SwitchPreference和CheckBoxPreference的事件處理是和Preference整個區域的事件綁定在一起
效果預覽Send:Click LocationMessage: 實現1:注冊高德地圖開發者賬號,創建應用、獲取高德地圖的 appkey2: jar 包建議直接從 融雲