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

启动页请求权限代码

作者: 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