zoukankan      html  css  js  c++  java
  • android动态申请权限

    申请权限对于安卓开发很重要,从Android6.0开始,Android系统提供动态申请权限的机制, APP在使用危险权限时,需要用户的授权才可进一步操作。所以这一篇文章介绍如何动态申请权限。非常简单。

    一、在AndroidManifest.xml配置所需要的权限,代码如下

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.camera">
        
    
        <!--需要配置的权限-->
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    二、新建一个项目,在MainActivity.java中加入动态申请权限的代码,代码如下

     1 package com.example.camera;
     2 
     3 import androidx.appcompat.app.AppCompatActivity;
     4 import androidx.core.app.ActivityCompat;
     5 import androidx.core.content.ContextCompat;
     6 
     7 import android.Manifest;
     8 import android.content.pm.PackageManager;
     9 import android.os.Bundle;
    10 import android.view.Window;
    11 import android.view.WindowManager;
    12 
    13 public class MainActivity extends AppCompatActivity {
    14     private static final String TAG = "MainActivity";
    15 
    16     @Override
    17     protected void onCreate(Bundle savedInstanceState) {
    18         super.onCreate(savedInstanceState);
    19 
    20         //去除顶部状态栏
    21         requestWindowFeature(Window.FEATURE_NO_TITLE);
    22         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    23         setContentView(R.layout.activity_main);
    24         // Android 6.0相机动态权限检查
    25         if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)== PackageManager.PERMISSION_GRANTED){
    26         }else {
    27             ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
    28         }
    29         
    30     }
    31 }

    其中requestPermissions的requestcode为1,作为后面的判断用。

    第二种方法,新建一个权限的数组,代码如下:

     1 public class MainActivity extends AppCompatActivity {
     2     private static final String TAG = "MainActivity";
     3 
     4     private static final String[] permission = new String[] {
     5             Manifest.permission.CAMERA,
     6             Manifest.permission.WRITE_EXTERNAL_STORAGE
     7     };
     8 
     9     @Override
    10     protected void onCreate(Bundle savedInstanceState) {
    11         super.onCreate(savedInstanceState);
    12 
    13         //去除顶部状态栏
    14         requestWindowFeature(Window.FEATURE_NO_TITLE);
    15         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    16         setContentView(R.layout.activity_main);
    17         // Android 6.0相机动态权限检查
    18         if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)== PackageManager.PERMISSION_GRANTED){
    19         }else {
    20             ActivityCompat.requestPermissions(this,permission,1);
    21         }
    22 
    23     }
    24 }
  • 相关阅读:
    镇中7日做题小结 day2
    镇中7日做题小结 day1
    关于开通luogu博客
    bitset用法和ch2101可达性统计
    离散化 下标与数值的深入理解
    黄题 P2038 无线网络发射器选址 被坑之痛
    最蒟蒻bug,没有之一
    http://www.laomaotao.net/?H4068
    C++设计模式——简单工厂模式
    面向对象的七个基本设计原则
  • 原文地址:https://www.cnblogs.com/hequnwang/p/14224044.html
Copyright © 2011-2022 走看看