apk版本更新 Android 7.0 文件读 1、动态申请读写权限 @TargetApi(23) public static boolean checkPermission(AppCompatActivity activity) { boolean isGranted = true; if (android.os.Build.VERSION.SDK_INT >= 23) { if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PERMISSION_GRANTED) { //如果没有写sd卡权限 isGranted = false; } if (activity.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PERMISSION_GRANTED) { isGranted = false; } if (activity.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PERMISSION_GRANTED) { isGranted = false; } if (activity.checkSelfPermission(Manifest.permission.CALL_PHONE) != PERMISSION_GRANTED) { isGranted = false; } if (!isGranted) { activity.requestPermissions( new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission .ACCESS_FINE_LOCATION, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, Manifest.permission.VIBRATE, Manifest.permission.RECORD_AUDIO, Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA}, 102); } } return isGranted; } 2、使用 FileProvider 设置存储路径,可兼容7.0以上 附:FileProvider 使用 https://blog.csdn.net/lmj623565791/article/details/72859156 Android 8.0 安装apk 需要手动配置 安装权限 1、静态配置 <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> 2、动态检查权限 /* * * 判断是否是8.0,8.0需要处理未知应用来源权限问题,否则直接安装 */ private void checkIsAndroidO() { if (Build.VERSION.SDK_INT >= 26) { boolean b = getPackageManager().canRequestPackageInstalls(); if (b) { mMainPresenter.installApk(); } else { //请求安装未知应用来源的权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.REQUEST_INSTALL_PACKAGES},INSTALL_PACKAGES_REQUEST_CODE); } } else { mMainPresenter.installApk(); } } /** * 申请权限回调 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case INSTALL_PACKAGES_REQUEST_CODE: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { mMainPresenter.installApk(); } else { // 引导用户手动开启安装权限 Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES); startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES); } break; default: break; } }