zoukankan      html  css  js  c++  java
  • 92、App Permissions(权限管理)实例

    •Manifest权限声明
    •Permission Groups-权限组
    •权限的区分-安装时授权于运行时授权
    •撤销权限
    •检查、请求权限
    •在应用中如何合理的处理权限请求逻辑
     
    在AndroidManifest.xml中配置权限。
     <!-- 照相机权限 -->
     <uses-permission android:name="android.permission.CAMERA"/>
     1 public class MainActivity extends Activity {
     2 
     3     @Override
     4     protected void onCreate(Bundle savedInstanceState) {
     5         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_main);
     8 
     9         findViewById(R.id.txt_getcamera).setOnClickListener(new View.OnClickListener() {
    10             @Override
    11             public void onClick(View view) {
    12                 getCamera();
    13             }
    14         });
    15     }
    16 
    17     // 获取相机的方法
    18     private void getCamera() {
    19         // MNC 代表的就是 Android M 的版本号。
    20         if (Build.VERSION.CODENAME.equals("MNC")) {
    21             // 如果拥有权限的话
    22             if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
    23                 opCamera();
    24             } else {  // 如果没有权限,请求 照相机的 权限。
    25                 requestPermissions(new String[]{Manifest.permission.CAMERA}, 1);
    26             }
    27         } else {
    28             opCamera();
    29         }
    30     }
    31 
    32     // 选择相应的权限,系统会弹出一个对话框让用户选择权限,权限的结果返回,需要此回掉的方法。
    33     @Override
    34     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    35         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    36 
    37         if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    38             Toast.makeText(MainActivity.this, "已获取权限", Toast.LENGTH_SHORT).show();
    39             opCamera();
    40         } else {
    41             Toast.makeText(MainActivity.this, "您拒绝了我", Toast.LENGTH_SHORT).show();
    42         }
    43     }
    44 
    45     private void opCamera() {
    46         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    47         startActivityForResult(intent, 1009);
    48     }
    49 
    50 }
  • 相关阅读:
    养成好习惯:在控制面板里停止服务
    很吊炸天的Xcode插件,你想要的这都有
    Cscope how to support java and c++
    java_lambda表达式
    【C语言】14-返回指针的函数与指向函数的指针
    李洪强
    【C语言】13-指针和字符串
    李洪强-C语言7-C语言运算符
    【C语言】12-指向一维数组元素的指针
    李洪强-C语言6-控制结构
  • 原文地址:https://www.cnblogs.com/androidsj/p/5470344.html
Copyright © 2011-2022 走看看