-
1.最近維護的專案中用到了 weiXinRecorded圖片選擇,導致專案targetSdkVersion不能升級到23及以 上
-
2.在Android 9.0出來之後,對儲存及拍照許可權,更改為了:允許,詢問,拒絕,比之前的允許,拒絕,多了一個詢問的狀態,就必須要用到動態請求許可權, 相矛盾的是 動態許可權是api 23 android 6.0以後的特性,專案為22及以下
-
3.結局辦法:谷歌官方針對,這一特殊情況,也做了相應的解決方案: 在app moudle 的build.gradle 中新增: 注意:是V4包中
implementation 'com.android.support:support-v4:support-core-utils-25.1.0'
implementation 'com.android.support:support-v4:support-compat-25.1.0'
-
在對應類中需要使用的地方 呼叫(如點選事件,跳轉頁面之前等)
-
獲取相應許可權
private void getPermissions() {
int permission = PermissionChecker.checkSelfPermission(context, android.Manifest.permission.WRITE_EXTERNAL_STORAGE); int cemerms = PermissionChecker.checkSelfPermission(context, android.Manifest.permission.CAMERA); //0成功 -1失敗 if (permission == PermissionChecker.PERMISSION_GRANTED && cemerms == PermissionChecker.PERMISSION_GRANTED) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager .PERMISSION_GRANTED || checkSelfPermission(getActivity(), Manifest.permission.RECORD_AUDIO) != PackageManager .PERMISSION_GRANTED || checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager .PERMISSION_GRANTED || checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager .PERMISSION_GRANTED) { //不具有獲取許可權,需要進行許可權申請 ActivityCompat.requestPermissions(getActivity(), new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE}, GET_PERMISSION_REQUEST); } else { startActivity(new Intent(getActivity(), LoginAcitivty.class)); } } else { startActivity(new Intent(getActivity(), LoginAcitivty.class)); } }else{ //寫個彈出框,讓使用者去手動開啟許可權 toSelfSetting(MyApplication.getContext()); } <!--跳往應用設定頁面--> public static void toSelfSetting(Context context) { Intent mIntent = new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (Build.VERSION.SDK_INT >= 9) { mIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); mIntent.setData(Uri.fromParts("package", context.getPackageName(), null)); } else if (Build.VERSION.SDK_INT <= 8) { mIntent.setAction(Intent.ACTION_VIEW); mIntent.setClassName("com.android.settings", "com.android.setting.InstalledAppDetails"); mIntent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName()); } context.startActivity(mIntent); 複製程式碼
}
使用weiXinRecorded不支援targetSdkVersion升級23及以上問題的解決方案
相關文章
- iview在ie9及以上的相容問題解決方案ViewIE9
- Laravel5.5 升級到 5.7 問題及解決方法Laravel
- react-navigation升級3.x 問題解決方案ReactNavigation
- React Native SDK 升級問題及分包方案React Native
- Rails 3 升級 Rails 4 中遇到的問題及解決方法AI
- 跨域問題及解決方案跨域
- 常見問題及解決方案
- 關於Linux發行版Ubuntu升級卡死的問題解決方案LinuxUbuntu
- iPhone 6/Plus常見使用問題及解決方案iPhone
- Q9使用常見問題及解決方案
- Kafka常見的問題及解決方案Kafka
- 升級到iOS5後ASIHttpRequest庫問題及解決方法iOSHTTP
- WordPress:常見問題及解決方案
- JS中toFixed()方法的問題及解決方案JS
- Android targetSdkVersion 升級到 26 總結Android
- 記一次升級Gradle外掛導致相容問題的解決方案Gradle
- 升級Android Studio到1.0.2的問題解決Android
- 快取常見問題及解決方案快取
- 快取三大問題及解決方案快取
- LNMP架構php升級問題及解決方法 php-5.3.10升級到php-5.4.0薦LNMP架構PHP
- Android資料庫升級不丟失資料解決方案Android資料庫
- 多執行緒的安全問題及解決方案執行緒
- 禁止wordpress版本自動升級的解決方案
- ArchLinux/Manjaro升級到6.9核心後的問題解決LinuxJAR
- 構建Potatso問題集錦及解決方案
- redis快取相關問題及解決方案Redis快取
- TCP 粘包 - 拆包問題及解決方案TCP
- matplotlib中文報錯問題及解決方案
- Java 程式死鎖問題原理及解決方案Java
- 【MySQL】order by 結果不準確的問題及解決MySql
- 完美解決ios10及以上Safari無法禁止縮放的問題iOS
- webView的使用及其亂碼問題的解決方案WebView
- 工作中碰到的Java問題整理及解決方案Java
- 快取世界中的三大問題及解決方案快取
- VMware下安裝Ubuntu遇到的問題及解決方案Ubuntu
- 使用 requests 2.11 版本時的 Site ID 型別問題及解決方案型別
- dsp builder 11.0 使用過程中產生的問題及解決方案UI
- Homestead 使用問題及解決方式