android 6.0以上关于GPS权限的问题 GPS获取权限

安卓6.0以上 就需要动态获取权限

static final String[] LOCATIONGPS = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.READ_PHONE_STATE};


/***
     *
     * @param activity
     */ 
public static void openQuanXian(final Activity activity){
        if (Build.VERSION.SDK_INT >= 23) {
            //--------------设置白名单
            Intent ignore = new Intent();
            ignore.setData(Uri.parse("package:"+activity.getPackageName()));
            ignore.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            activity.startActivity(ignore);
            //判断是否为android6.0系统版本,如果是,需要动态添加权限
            if (ContextCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION)
                    != PERMISSION_GRANTED) {// 没有权限,申请权限。
                ActivityCompat.requestPermissions(activity, LOCATIONGPS,BAIDU_READ_PHONE_STATE);


            }
        }

    }

这是动态获取GPS权限   就是询问的那块

一下代码是初始化GPS所需要的代码

 private static final String TAG = "==Other";

    public static void initGPS(final Activity activity) {

        LocationManager locationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE);

        // 判断GPS模块是否开启,如果没有则开启
        if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

            Log.d(TAG, "---> 判断GPS模块是否开启,如果没有则开启");
            Toast.makeText(activity, "判断GPS模块是否开启,如果没有则开启", Toast.LENGTH_SHORT).show();

            AlertDialog.Builder dialog = new AlertDialog.Builder(activity);
//            dialog.setTitle("要使用定位功能,请打开GPS连接");
            dialog.setMessage("要使用定位功能,请打开GPS连接");
            dialog.setPositiveButton("设置", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialogInterface, int position) {
                    Log.d(TAG, "---> 设置");
                    // 转到手机设置界面,用户设置GPS
                    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    activity.startActivityForResult(intent, 0); // 设置完成后返回到原来的界面
                }
            });

            dialog.setNeutralButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int position) {
                    Log.d(TAG, "---> 取消");
                    dialogInterface.dismiss();
                }
            });

            AlertDialog alertDialog = dialog.create();

            //点击外面不消失
            alertDialog.setCanceledOnTouchOutside(false);
            alertDialog.setCancelable(false);

            alertDialog.show();

        } else {
            Log.d(TAG, "---> GPS模块已开启");
            Toast.makeText(activity, "GPS模块已开启", Toast.LENGTH_SHORT).show();
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_39801925/article/details/86655835