混合開發的坑
/**
* 忽略電池優化
*/
private void ignoreBatteryOptimization(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); boolean hasIgnored = powerManager.isIgnoringBatteryOptimizations(activity.getPackageName()); //判斷當前APP是否有加入電池優化的白名單,如果沒有,彈出加入電池優化的白名單的設定對話方塊。 if (!hasIgnored) { Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + activity.getPackageName())); startActivity(intent); } } }
在配置檔案AndroidManifest.xml新增許可權:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
彈出的確認框點選確認,即可申請加入優化白名單
Android7.0呼叫相機時出現新的錯誤:
android.os.FileUriExposedException: file:///storage/emulated/0/photo.jpeg exposed beyond app through ClipData.Item.getUri()
解決辦法:
在Application的onCreat()方法中新增以下程式碼:
// android 7.0系統解決拍照的問題 StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); builder.detectFileUriExposure();