-
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
- react-navigation升級3.x 問題解決方案ReactNavigation
- React Native SDK 升級問題及分包方案React Native
- Laravel5.5 升級到 5.7 問題及解決方法Laravel
- 跨域問題及解決方案跨域
- Kafka常見的問題及解決方案Kafka
- Android targetSdkVersion 升級到 26 總結Android
- WordPress:常見問題及解決方案
- 記一次升級Gradle外掛導致相容問題的解決方案Gradle
- JS中toFixed()方法的問題及解決方案JS
- ArchLinux/Manjaro升級到6.9核心後的問題解決LinuxJAR
- 快取三大問題及解決方案快取
- 快取常見問題及解決方案快取
- matplotlib中文報錯問題及解決方案
- 多執行緒的安全問題及解決方案執行緒
- 使用 requests 2.11 版本時的 Site ID 型別問題及解決方案型別
- 構建Potatso問題集錦及解決方案
- TCP 粘包 - 拆包問題及解決方案TCP
- redis快取相關問題及解決方案Redis快取
- Python 3.6.10 中的 requests 庫 TLS 1.2 強制使用問題及解決方案PythonTLS
- 工作中碰到的Java問題整理及解決方案Java
- 快取世界中的三大問題及解決方案快取
- 完美解決ios10及以上Safari無法禁止縮放的問題iOS
- 升級到macOS Big Sur後,EasyConnect 無法使用解決方案Mac
- Android應用安全常見問題及解決方案Android
- Web 學習之跨域問題及解決方案Web跨域
- 【FAQ】推送服務常見問題及解決方案
- 物聯網路卡常見問題及解決方案
- CrashSight 接入上報常見問題及解決方案
- 快取過程存在的三大問題及解決方案快取
- HHMySQL?中定位?DDL?被阻塞的問題及解決方案xmwMySql
- 【FAQ】整合分析服務的常見問題及解決方案
- VS2019配置Opencv遇到的部分問題及解決方案OpenCV
- C# Thread.Sleep 不精準的問題以及解決方案C#thread
- Android 5.0及以上WebView不能使用第三方Cookies解決方案AndroidWebViewCookie
- [轉帖]使用perf解決JDK8U小版本升級後效能下降的問題JDK
- RecyclerView的使用總結以及常見問題解決方案View
- Lumen 中使用 jwt 時多 guard 的問題解決方案JWT