PS:个人笔记记录
本文摘自某作者,仅作为笔记
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;
}
}
参考文献: