Android 6.0 及以上运行时权限处理
来源:互联网 发布:淘宝买家号可以开店吗 编辑:程序博客网 时间:2024/06/08 05:58
一、 1个运行时权限处理
Android 6.0 及以上时只需要1个运行权限处理,如CALL_PHONE权限:
在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.CALL_PHONE" />申请运行权限:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button call = (Button) findViewById(R.id.call); call.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1); } else { call(); } } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { call(); } else { Toast.makeText(this, "You denied the permission", Toast.LENGTH_SHORT).show(); } break; default: break; } } private void call() { try { Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:10086")); startActivity(intent); } catch (SecurityException e) { e.printStackTrace(); } }}
二、多个运行时权限处理
Android 6.0 及以上时只需要多个运行权限处理,如:READ_PHONE_STATE、ACCESS_FINE_LOCATION、WRITE_EXTERNAL_STORAGE等
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); List<String> permissionList = new ArrayList<>(); if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.READ_PHONE_STATE); } if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) { permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE); } if (!permissionList.isEmpty()) { String[] permissions = permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(MainActivity.this, permissions, 1); } else { doyourfunction(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 1: if (grantResults.length > 0 ) { for (int result : grantResults) { if (result != PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "必须同意所有权限才能使用本程序",Toast.LENGTH_LONG).show(); finish(); return; } } doyourfunction(); } else { Toast.makeText(this, "发生未知错误",Toast.LENGTH_LONG).show(); finish(); } break; default: break; } }
阅读全文
0 0
- Android 6.0及以上运行时权限处理完全解析
- Android 6.0 及以上运行时权限处理
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上权限处理
- Android 6.0及运行时权限处理
- android 6.0以上版本 运行时权限
- android studio 6.0以上运行时权限
- android 6.0及以上 运行时权限申请(动态权限申请)
- Android 6.0以上运行权限及RxPermissions的使用
- Android 6.0以上权限处理
- Android运行时权限使用详解(适用于Android 6.0及以上)
- 安卓6.0及以上权限处理
- Android M 6.0以上 需要运行时申请的权限
- Android 6.0以上 需要运行时申请的权限(一)
- Android 6.0以上 需要运行时申请的权限(二)
- Chrome 控制台实用指南
- 【Angular2】如何搭建Angular2的环境
- sssssssssssss
- Ueditor富编辑器做弹出或是某些情况第二次打开的时候会渲染失败
- 限制显示的字数,并用省略号代替省略掉的子
- Android 6.0 及以上运行时权限处理
- ubuntu17.04下搭建LNMP
- UE4 五个最常见的基类
- vue中如何将html字符串转化为html
- 理财-基金投入比例
- iOS开发中的权限适配问题总结
- 3DSlicer5:开发者必晓ABC
- Android 7.0配置fileprovider共享文件 解决FileUriExposedException
- RemoteView的使用