美文网首页
启动页请求权限代码

启动页请求权限代码

作者: gaom明 | 来源:发表于2018-05-11 14:48 被阅读47次

    import android.Manifest;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.os.AsyncTask;
    import android.os.Build;
    import android.os.Bundle;

    import java.util.ArrayList;
    import java.util.List;

    public class StartActivity extends BaseActivity {

    public String[] permArray = { Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA,
            Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.KILL_BACKGROUND_PROCESSES,
            Manifest.permission.RESTART_PACKAGES
    };
    
    protected boolean isPermissionsAllGranted(){
    
    
    
        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){
            return true;
        }
        //获得批量请求但被禁止的权限列表
        List<String> deniedPerms = new ArrayList<String>();
        for(int i=0;permArray!=null&&i<permArray.length;i++){
            if(PackageManager.PERMISSION_GRANTED != checkSelfPermission(permArray[i])){
                deniedPerms.add(permArray[i]);
            }
        }
        //进行批量请求
        int denyPermNum = deniedPerms.size();
        if(denyPermNum != 0){
            requestPermissions(deniedPerms.toArray(new String[denyPermNum]),1);
            //return false;
        }
    
        for(int i=0;MainActivity.permArray!=null&&i<MainActivity.permArray.length;i++){
            if(PackageManager.PERMISSION_GRANTED != checkSelfPermission(MainActivity.permArray[i])){
    
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                i =-1;
            }
        }
    
        return true;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
    
        AuthorizationTask authorizationTask = new AuthorizationTask();
        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR1) {
            authorizationTask.execute();
        } else {
            authorizationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        }
    }
    
    public class AuthorizationTask extends AsyncTask<Integer, Integer, String> {
        //后面尖括号内分别是参数(例子里是线程休息时间),进度(publishProgress用到),返回值 类型
        @Override
        protected void onPreExecute() {
            //第一个执行方法
            super.onPreExecute();
        }
    
    
    
        @Override
        protected String doInBackground(Integer... params) {
            //第二个执行方法,onPreExecute()执行完后执行
            isPermissionsAllGranted();
            publishProgress();
            return "";
        }
    
        @Override
        protected void onProgressUpdate(Integer... progress) {
            //这个函数在doInBackground调用publishProgress时触发,虽然调用时只有一个参数
            //但是这里取到的是一个数组,所以要用progesss[0]来取值
            //第n个参数就用progress[n]来取值
    
            Intent intent = new Intent(StartActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
    
            super.onProgressUpdate(progress);
        }
    
        @Override
        protected void onPostExecute(String result) {
            //doInBackground返回时触发,换句话说,就是doInBackground执行完后触发
            //这里的result就是上面doInBackground执行后的返回值,所以这里是"执行完毕"
            super.onPostExecute(result);
        }
    
    }
    

    }

    相关文章

      网友评论

          本文标题:启动页请求权限代码

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