运用场景
公司项目需要利用webview展示H5页面,页面有上传图片的功能,需要webview 原生和js进行交互,利用webview 调用系统相机和图库,将图片传到js页面刷新
首先在Manifest.xml中添加如下权限
<!-- 访问网络权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- 调用摄像头的权限 -->
<uses-permission android:name="android.permission.CAMERA"/>
<!-- 文件系统权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- SD卡写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
android 8.0需要手动设置调用相机权限
boolean camera = BaseApplication.checkPermission(this, Manifest.permission.CAMERA);
if (camera) {
jumpToWeb(url);
} else {
BaseApplication.startRequestPermision(this, Manifest.permission.CAMERA, REQUEST_CODE);
}
/**
* 校验Permission权限
*
* @param context Context
* @param permission 权限名
* @return 是否有权限
*/
public static boolean checkPermission(Context context, String permission) {
boolean result = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
return false;
}
} else {
PackageManager pm = context.getPackageManager();
if (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED) {
result = true;
}
}
return result;
}
/**
* 申请单个权限
*/
public static void startRequestPermision(Activity activity, String permission, int requestCode) {
ActivityCompat.requestPermissions(activity, new String[]{
permission}, requestCode);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (Build.VERSION.SDK_INT >= Build.VERSION_COD