Android piles of RuntimePermissions requests, code improving

简介: Android piles of RuntimePermissions requests, code improvingfor example:AndroidManifest.

Android piles of RuntimePermissions requests, code improving


for example:

AndroidManifest.xml:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CAMERA" />


java:

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
    private final String TAG = "权限";

    //请求码。
    private final int REQUEST_CODE = 0xa01;

    //批量权限组。
    private String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            for (int i = 0; i < permissions.length; i++) {
                if (ContextCompat.checkSelfPermission(this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
                    Log.d(TAG, permissions[i] + "未获得授权,请求权限...");
                    ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE);
                } else {
                    Log.d(TAG, permissions[i] + "已获得授权,无需重复请求权限。");
                }
            }
        } else {
            Log.d(TAG, "Android版本低于23,无需运行时请求权限。");
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        switch (requestCode) {
            case REQUEST_CODE:
                if (grantResults != null && permissions != null) {
                    for (int i = 0; i < grantResults.length; i++) {
                        /**
                         * PackageManager.PERMISSION_GRANTED:该值为常量值0,表示权限已经授予。
                         */
                        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                            Log.d(TAG, permissions[i] + " 获得授权。");

                            //在这里开始启动获得授权后的业务逻辑代码。
                        }

                        /**
                         * PackageManager.PERMISSION_DENIED:该值为常量值-1,表示权限未被授予。
                         */
                        if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
                            Log.d(TAG, permissions[i] + " 未获得授权。");

                            //在这里开始启动未获得授权后的业务逻辑代码。
                        }
                    }
                }

                break;
        }
    }
}


相关文章
|
7月前
|
Android开发
android 错误 exported needs to be explicitly specified for Apps targeting Android 12
android 错误 exported needs to be explicitly specified for Apps targeting Android 12
|
12月前
|
Java API 开发工具
Building Android notifications 2.3 through to 6.0
Building Android notifications 2.3 through to 6.0
44 0
|
Android开发 Kotlin
【错误记录】Android Studio 运行报错 ( There is not enough memory to perform the requested operation. )
【错误记录】Android Studio 运行报错 ( There is not enough memory to perform the requested operation. )
583 0
【错误记录】Android Studio 运行报错 ( There is not enough memory to perform the requested operation. )
|
Android开发
Android Studio 解决Error:(781) Multiple substitutions specified in non-positional format; did you ...
异常信息: /Users/mazaiting/AndroidStudioProjects/WisdomSite/app/build/intermediates/res/merged/debug/values/values.
1426 0
|
安全 Java Android开发
PhotoSharing Part I: Setting up the Photo Sharing Android Application
We will build a photo sharing Android app with real-time image uploading and downloading functionality using Alibaba Cloud OSS.
1759 0
|
Android开发
Android Design Support Library全解:Part 2 Snackbar
Android Design Support Library系列第2弹: Snackbar “Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar.
837 0