美文网首页
2020-09-11 我写的android权限申请代码reque

2020-09-11 我写的android权限申请代码reque

作者: 湖南的肖逸飞 | 来源:发表于2020-09-11 11:45 被阅读0次

    package com.xiao.filetest;

    import androidx.annotation.NonNull;

    import androidx.annotation.Nullable;

    import androidx.appcompat.app.AppCompatActivity;

    import androidx.core.app.ActivityCompat;

    import android.Manifest;

    import android.app.AlertDialog;

    import android.content.DialogInterface;

    import android.content.Intent;

    import android.content.pm.PackageManager;

    import android.net.Uri;

    import android.os.Bundle;

    import android.provider.Settings;

    import android.widget.TextView;

    import java.util.ArrayList;

    import java.util.List;

    public class MainActivityextends AppCompatActivity {

    private final static String[]PERMISSIONS=new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION};

        private final static int REQUEST_CODE_PERMISSION=1;

        private final static int REQUEST_CODE_SETTINGS=2;

        private TextViewtextView;

        @Override

        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

            if (requestCode ==REQUEST_CODE_SETTINGS) {

    recreate();

            }

    }

    @Override

        protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            textView=findViewById(R.id.id_text_view);

            if(requestPermission(PERMISSIONS)){//请求权限

                continueNext();//继续运行程序

            }

    }

    private void continueNext() {

    //获得权限后,继续运行的代码

            textView.setText("成功");

        }

    @Override

        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    boolean valid=true;

            for(String permission:permissions){

    if(!shouldShowRequestPermissionRationale(permission)) valid=false; //某项权限被禁止并不再询问

            }

    if (valid) {

    recreate();//如果某项权限没通过,刷新本页,会继续请求

            }else {

    //某项权限被禁止并不再询问,则转到程序的设置页

                new AlertDialog.Builder(this).setMessage("正常运行本程序,需要某些权限,请设置!").setPositiveButton("确定", new DialogInterface.OnClickListener() {

    @Override

                    public void onClick(DialogInterface dialogInterface, int i) {

    Intent intent =new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);

                        intent.setData(Uri.parse("package:" + getPackageName()));

                        startActivityForResult(intent,REQUEST_CODE_SETTINGS);

                    }

    }).show();

            }

    }

    private boolean requestPermission(String[] permissions){

    boolean valid=true;

            List requestPermissions=new ArrayList<>();

            for(String permission:permissions){

    if(ActivityCompat.checkSelfPermission(this,permission)!= PackageManager.PERMISSION_GRANTED){

    requestPermissions.add(permission);

                    valid=false;

                }

    }

    if(requestPermissions.size()>0){

    ActivityCompat.requestPermissions(this,requestPermissions.toArray(new String[requestPermissions.size()]),REQUEST_CODE_PERMISSION);

            }

    return valid;

        }

    }

    相关文章

      网友评论

          本文标题:2020-09-11 我写的android权限申请代码reque

          本文链接:https://www.haomeiwen.com/subject/xybvektx.html