android动态申请权限

摘要:
申请权限对于安卓开发很重要,从Android6.0开始,Android系统提供动态申请权限的机制,APP在使用危险权限时,需要用户的授权才可进一步操作。

申请权限对于安卓开发很重要,从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 packagecom.example.camera;
2 
3 importandroidx.appcompat.app.AppCompatActivity;
4 importandroidx.core.app.ActivityCompat;
5 importandroidx.core.content.ContextCompat;
6 
7 importandroid.Manifest;
8 importandroid.content.pm.PackageManager;
9 importandroid.os.Bundle;
10 importandroid.view.Window;
11 importandroid.view.WindowManager;
12 
13 public class MainActivity extendsAppCompatActivity {
14     private static final String TAG = "MainActivity";
15 
16 @Override
17     protected voidonCreate(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 extendsAppCompatActivity {
2     private static final String TAG = "MainActivity";
3 
4     private static final String[] permission = newString[] {
5 Manifest.permission.CAMERA,
6 Manifest.permission.WRITE_EXTERNAL_STORAGE
7 };
8 
9 @Override
10     protected voidonCreate(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 }

免责声明:文章转载自《android动态申请权限》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇「雕爷学编程」Arduino动手做(26)——4X4矩阵键盘模块【解决方法】ModuleNotFoundError: No module named 'flask._compat'下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【转】Android Drawable Resource学习(十一)、RotateDrawable

对另一个drawable资源,基于当前的level,进行旋转的drawable。 文件位置: res/drawable/filename.xml文件名即资源名 编译数据类型: 指向 RotateDrawable的指针。 资源引用: In Java: R.drawable.filenameIn XML: @[package:]drawable/filen...

flutter vscode+第三方安卓模拟器

1.先打开夜神模拟器2.win+R选择cmd进入第三方模拟器的安装目录的bin目录下夜神模拟器然后运行命令: nox_adb.exe connect 127.0.0.1:62001 3.打开vscode到项目下terminal,建立连接: adb connect 127.0.0.1:62001 (夜神模拟器默认端口) 4.查看连接:adb devices...

觅踪2

        昨天的页面设计受到了停滞,今天换了一种形式,之前是直接用按键绘制,现在改为代码操纵,自己的进程缓慢了许多,明天将继续加油 界面代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.co...

Android设置点击变色效果

首先在drawable下面新建一个select.xml文件,代码如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android" > 3 <item an...

安卓手机屏幕投射到电脑以及一台电脑控制多台手机技术原理浅析

奥创软件研究院推出的奥创群控让越来越多的人了解到了电脑控制手机的操作。自奥创软件研究院首家发布电脑批量控制手机的解决方案以来,有很多人开始探讨电脑控制手机技术在实际工作中的应用。 由于市场太大,仅靠奥创软件研究院一家也是做不过来的,现在将手机屏幕投射到到电脑的技术原理,以及一台电脑批量控制多台手机的技术(即所谓的手机反响控制)简单的给大家介绍下,在此抛砖引...

Android Studio 多渠道打包

什么是Gradle  Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言。Android Studio中新建项目成功后自动下载Gradle。 Gradle有几个基本组件: 1.整个项目的gradle配置文件build.gradle // T...