当前文章: 首页 >> 编程开发 >> JAVA >> Android权限检测和动态申请
聚划算
«   2020年3月   »
1
2345678
9101112131415
16171819202122
23242526272829
3031
网站分类
    海外云服务器CPS_轻量拓展全民云计算企业云服务器云盾证书
标签列表
最近发表

Android权限检测和动态申请

Android权限检测和动态申请,没有权限则退出程序:


解决方案:


文件: AndroidManifest.xml  (放在和application同级就可以)

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />



新建一个类,方便管理,我这里的新建类是Permission

public class Permission {
    private static final String TAG = "Permission";
    private int requestCode;

    public Permission(Context context, Activity activity, int requestCode) {
        String[] list = new String[]{
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.ACCESS_NETWORK_STATE,
                Manifest.permission.INTERNET,
                Manifest.permission.READ_PHONE_STATE,
                Manifest.permission.ACCESS_FINE_LOCATION
        };
        this.requestCode = requestCode;

        // check AND request
        for (String value : list) {
            if (PackageManager.PERMISSION_DENIED == ActivityCompat.checkSelfPermission(context, value)) {
                // request
                ActivityCompat.requestPermissions(activity, list, requestCode);
                break;
            }
        }
    }

    public int getRequestCode() {
        return requestCode;
    }
}



调用Permission即可,我这是在MainActivity类中的onCreate方法中调用

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private Permission permission;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);   
    //
    this.permission = new Permission(this, this, 10000);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (this.permission.getRequestCode() == requestCode) {
        int i = 0;
        for (int res : grantResults) {
            if (PackageManager.PERMISSION_DENIED == res) {
                String permission = permissions[i];
                Log.i(TAG, permission);

                Toast.makeText(this, permission + ": " + this.getText(R.string.PERMISSION_TOAST), Toast.LENGTH_SHORT).show();
                this.finish();
                break;
            }
            //
            i++;
        }
    } else {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

}


声明:本站原创文章,转载、复制、使用等请注明出处。
标题Android权限检测和动态申请
作者jues
地址: http://blog.jues.org.cn/post/android-quan-xian-jian-ce-he-dong-tai-shen-qing.html

发表评论:

Powered By Z-BlogPHP 1.5.2 Zero Powered By Z-BlogPHP © 2018 jues博客 Copyright Your WebSite.Some Rights Reserved.联系站长 Themes by jues