项目权限修改

本文章为项目中遇到的权限修改
项目BUG:切换权限后进入会有一个黑色标题栏

// 在style.xml文件里定义
<resources>  
    <style name="notitle">  
        <item name="android:windowNoTitle">true</item>  
    </style>   
</resources> 

// 然后AndroidManifest.xml中引用
<application android:icon="@drawable/icon"   
        android:label="@string/app_name"   
        android:theme="@style/notitle">  

修改:AndroidPermission -> getLocationPermissions

// 地址权限
public static boolean getLocationPermissions(Activity activity) {
    if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
            return false;
    }else{
        return true;
    }
}

Loding时权限Activity_Loading -> onCreate:

public void onCreate(Bundle savedInstanceState) {
        setFullscreen();
        super.onCreate(savedInstanceState);
        context = this;
        AppVoicePlay.stop_all_voice(this, "Activity_Loading");
        ApplicationApp.myncicDebuger.checkKill(this);
        DLog.e("", ApplicationApp.isfast+"=======isfast");
        add_ring_list();

        setContentView(R.layout.activity_loading);
        location_dont_open = (LinearLayout) findViewById(R.id.location_dont_open);
        location_srue_click = (TextView) findViewById(R.id.location_srue_click);
        activity_loading_img = (ImageView) findViewById(R.id.activity_loading_img);
        activity_loading_img.setBackgroundResource(R.drawable.run_loading_img);

        // 判断权限
        List<String> permissionList = new ArrayList<>();
        if (ContextCompat.checkSelfPermission(this, Manifest.
                permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }
        if (ContextCompat.checkSelfPermission(this, Manifest.
            permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
        permissionList.add(Manifest.permission.READ_PHONE_STATE);
        }
        if (ContextCompat.checkSelfPermission(this, Manifest.
                permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            permissionList.add(Manifest.permission.READ_EXTERNAL_STORAGE);
        }
        if (!permissionList.isEmpty()) {
            String [] permissions = permissionList.toArray(new String[permissionList.size()]);
            ActivityCompat.requestPermissions(this, permissions, 1);
        } else {

            if (!ApplicationApp.isfast) {
                handler.sendEmptyMessageDelayed(LOADING_FINISH, 0);
                return;
            }else {
                try {
                    setContentView(R.layout.activity_loading);
                    location_dont_open = (LinearLayout) findViewById(R.id.location_dont_open);
                    location_srue_click = (TextView) findViewById(R.id.location_srue_click);
                    activity_loading_img = (ImageView) findViewById(R.id.activity_loading_img);
                    activity_loading_img.setBackgroundResource(R.drawable.run_loading_img);
                    location_srue_click.setText("关闭");
                    location_dont_open.setVisibility(View.GONE);
                    locationclient = new BaseLocation(getBaseContext());
                    locationclient.startLocation(1000);
                    locationclient.setLocationInterface(new LocationInterface() {
                        @Override
                        public void onReceiveLocation(AMapLocation amapLocation) {
                            if (amapLocation != null && amapLocation.getErrorCode() == 0) { //定位错误代码。错误代码==0,则定位成功
//                          ApplicationApp.my_now_location = amapLocation;
                                get_system_config();
                                startUPLoadLocationData(amapLocation);
                                try {
                                    locationclient.onDestroy();
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }else {
                                if (load_location_num > 3) {
                                    location_dont_open.setVisibility(View.VISIBLE);
                                    listener();
                                }else {
                                    load_location_num++;
                                }
                            }
                        }
                    });
                } catch (Exception e) {
                }
            }
            handler.sendEmptyMessageDelayed(LOADING_FINISH, 3000);
        }
    }

Loading时权限Activity_Loading -> 写一个回调方法

    // 处理权限
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                               @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);

            switch (requestCode) {
                case 1:
                    if (grantResults.length > 0) {
                        for (int result : grantResults) {
                            if (result != PackageManager.PERMISSION_GRANTED) {
                                BaseDialog dialog = new BaseDialog(context, BaseDialog.DIALOG_BASE, ApplicationApp.DIALOG_STYLE, new BaseDialogListener() {
                                    @Override
                                    public void OnClick(Dialog dialog, View view, String editTextStr) {
                                        if(view.getId() == com.myncic.mynciclib.R.id.dialogsure){

                                        }else if(view.getId() == com.myncic.mynciclib.R.id.dialogcancel){
                                            Intent intent = new Intent()
                                                    .setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
                                                    .setData(Uri.fromParts("package",
                                                            context.getPackageName(), null));
                                            startActivity(intent);
                                        }
                                        finish();
                                        dialog.dismiss();
                                    }
                                });
                                dialog.setButtonText("取消","去设置");
                                dialog.setContentText("未获取到存储或定位权限,程序无法正常工作,请设置!");
                                dialog.dialogtitle.setVisibility(View.GONE);
                                dialog.setCancelable(false);
                                dialog.show();
                                return;
                            }
                        }
                        if(!ApplicationApp.isfast){
                            handler.sendEmptyMessageDelayed(LOADING_FINISH, 0);
                        }else handler.sendEmptyMessage(LOADING_FINISH);
                    } else {
                        Toast.makeText(this, "发生未知错误", Toast.LENGTH_SHORT).show();
                        finish();
                    }
                    break;
                default:
            }
        }

点击聊天界面权限:MsgInnerContent ->

// 点击位置判断定位权限和进入定位地图
    positionBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {

            if(AndroidPermission.getLocationPermissions(context)){
                if(CheckDispose.clickInterval(500))
                    return;
                Intent intent = new Intent();
                Bundle bundle = new Bundle();
                bundle.putInt("operType",2);
                intent.setClass(context, Activity_MsgPositionChoose.class);
                intent.putExtras(bundle);
                Activity activity = (Activity)context;
                activity.startActivityForResult(intent, Activity_MsgPositionChoose.CHOOSE_POSITION_START);
            }

        }
    });

... 


// 点击图片判断权限进入选择图库
imageBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                if(AndroidPermission.getExternalStrongePermissions(context)){

                    if(CheckDispose.clickInterval(300))
                        return;
                    ImageSelectorActivity.start(context,1);
                }
            }
        });

...

点击聊天界面权限:Activity_MsgContent -> 写一个回调方法

// 处理权限
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    switch (requestCode) {

        // 获取储存权限
        case AndroidPermission.REQUEST_EXTERNAL_STRONGE:
            if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                if(CheckDispose.clickInterval(300))
                    return;
                ImageSelectorActivity.start(Activity_MsgContent.this,1);
            }else{
                // 获取提示框
                getDialog();
            }
            break;

        // 获取地址权限
        case AndroidPermission.REQUEST_LOCATION:
            if (permissions[0].equals(Manifest.permission.ACCESS_FINE_LOCATION)
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                if(CheckDispose.clickInterval(500))
                    return;
                Intent intent = new Intent();
                Bundle bundle = new Bundle();
                bundle.putInt("operType",2);
                intent.setClass(context, Activity_MsgPositionChoose.class);
                intent.putExtras(bundle);
                Activity activity = (Activity)context;
                activity.startActivityForResult(intent, Activity_MsgPositionChoose.CHOOSE_POSITION_START);
            }else{
                // 获取提示框
                getDialog();
            }
            break;


    }
}

点击聊天界面权限:MsgInnerContent -> 写一个弹出框方法

// 权限不足提示框
    public void getDialog() {
        BaseDialog dialog = new BaseDialog(context, BaseDialog.DIALOG_BASE, ApplicationApp.DIALOG_STYLE, new BaseDialogListener() {
            @Override
            public void OnClick(Dialog dialog, View view, String editTextStr) {
                if(view.getId() == com.myncic.mynciclib.R.id.dialogsure){

                }else if(view.getId() == com.myncic.mynciclib.R.id.dialogcancel){
                    Intent intent = new Intent()
                            .setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
                            .setData(Uri.fromParts("package",
                                    context.getPackageName(), null));
                    startActivity(intent);
                }
                dialog.dismiss();
            }
        });
        dialog.setButtonText("取消","去设置");
        dialog.setContentText("未获取到权限,程序无法正常工作,请设置!");
        dialog.dialogtitle.setVisibility(View.GONE);
        dialog.setCancelable(false);
        dialog.show();
    }

点击权限:拍摄照片权限ImageSelectorActivity -> 定义

public final static int REQUEST_PERMISSION_CAMERA=464;

点击权限:拍照权限ImageSelectorActivity -> startCamera()

    /**
     * 打开拍照和权限判断
     * start to camera、preview、crop
     */
    public void startCamera() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA,
                    Manifest.permission.CAMERA}, REQUEST_PERMISSION_CAMERA);
            return ;
        }
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        ContentValues contentValues = new ContentValues(1);
        File cameraFile = FileUtils.createCameraFile(this);
        cameraPath = cameraFile.getAbsolutePath();
        contentValues.put(MediaStore.Images.Media.DATA, cameraFile.getAbsolutePath());
        Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        startActivityForResult(intent, REQUEST_CAMERA);
    }

点击权限:拍照权限ImageSelectorActivity -> 写一个回调方法

//处理权限
@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            // requestCode即所声明的权限获取码,在checkSelfPermission时传入
            case REQUEST_PERMISSION_CAMERA:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // 获取到权限,作相应处理(调用定位SDK应当确保相关权限均被授权,否则可能引起定位失败)
                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    ContentValues contentValues = new ContentValues(1);
                    File cameraFile = FileUtils.createCameraFile(this);
                    cameraPath = cameraFile.getAbsolutePath();
                    contentValues.put(MediaStore.Images.Media.DATA, cameraFile.getAbsolutePath());
                    Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
                    startActivityForResult(intent, REQUEST_CAMERA);
                } else {
                    // 没有获取到权限,做特殊处理
                    Toast.makeText(getApplicationContext(), "获取位置权限失败,请设置照相权限", Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                break;
        }
    }

点击扫码权限:Fragment_QRScan

public void initCamera(){
        Activity activiy = (Activity)context;
        if(!AndroidPermission.getCameraPermissions(activiy)){
        }
        ...
}

点击扫码权限:Activity_PPGroup_Radar_QR

// 处理权限
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        switch (requestCode) {

            // 获取拍照权限
            case AndroidPermission.REQUEST_CAMERA:
                if (permissions[0].equals(Manifest.permission.CAMERA)
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED){

                    qrscanFragment.initCamera();

                }else{
                    // 获取提示框
                    BaseDialog dialog = new BaseDialog(context, BaseDialog.DIALOG_BASE, ApplicationApp.DIALOG_STYLE, new BaseDialogListener() {
                        @Override
                        public void OnClick(Dialog dialog, View view, String editTextStr) {
                            if(view.getId() == com.myncic.mynciclib.R.id.dialogsure){

                            }else if(view.getId() == com.myncic.mynciclib.R.id.dialogcancel){
                                Intent intent = new Intent()
                                        .setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
                                        .setData(Uri.fromParts("package",
                                                context.getPackageName(), null));
                                startActivity(intent);
                            }
                            dialog.dismiss();
                        }
                    });
                    dialog.setButtonText("取消","去设置");
                    dialog.setContentText("未获取到权限,程序无法正常工作,请设置!");
                    dialog.dialogtitle.setVisibility(View.GONE);
                    dialog.setCancelable(false);
                    dialog.show();
                }
                break;
            default:
        }
    }

点击竞价权限:Net_Work -> startGetOrder() ->

public static void startGetOrder(final Context context,final JSONObject order_info,final String id,final return_order re_order){
        Activity activity = (Activity) context;
        if(!AndroidPermission.getLocationPermissions(activity)){
            return;
        }
        ...
}

启动主页面权限:init()

public void init(){
        // 进入主页面判断定位和储存权限
        Activity activiy = (Activity)context;
        if(!AndroidPermission.getLocationPermissions(activiy)){}
        if(!AndroidPermission.getExternalStrongePermissions(activiy)){}
        ...
}

启动主页面权限(回调):Activity_Main

// 处理权限
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    switch (requestCode) {

        // 获取地址权限
        case AndroidPermission.REQUEST_LOCATION:
            if (permissions[0].equals(Manifest.permission.ACCESS_FINE_LOCATION)
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED){
            }else{
                // 获取提示框
                BaseDialog dialog = new BaseDialog(context, BaseDialog.DIALOG_BASE, ApplicationApp.DIALOG_STYLE, new BaseDialogListener() {
                    @Override
                    public void OnClick(Dialog dialog, View view, String editTextStr) {
                        if(view.getId() == com.myncic.mynciclib.R.id.dialogsure){

                        }else if(view.getId() == com.myncic.mynciclib.R.id.dialogcancel){
                            Intent intent = new Intent()
                                    .setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
                                    .setData(Uri.fromParts("package",
                                            context.getPackageName(), null));
                            startActivity(intent);
                        }
                        dialog.dismiss();
                    }
                });
                dialog.setButtonText("取消","去设置");
                dialog.setContentText("未获取到权限,程序无法正常工作,请设置!");
                dialog.dialogtitle.setVisibility(View.GONE);
                dialog.setCancelable(false);
                dialog.show();
            }
            break;

        // 获取储存权限
        case AndroidPermission.REQUEST_EXTERNAL_STRONGE:
            if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                init();
            }else{
                // 获取提示框
                BaseDialog dialog = new BaseDialog(context, BaseDialog.DIALOG_BASE, ApplicationApp.DIALOG_STYLE, new BaseDialogListener() {
                    @Override
                    public void OnClick(Dialog dialog, View view, String editTextStr) {
                        if(view.getId() == com.myncic.mynciclib.R.id.dialogsure){

                        }else if(view.getId() == com.myncic.mynciclib.R.id.dialogcancel){
                            Intent intent = new Intent()
                                    .setAction("android.settings.APPLICATION_DETAILS_SETTINGS")
                                    .setData(Uri.fromParts("package",
                                            context.getPackageName(), null));
                            startActivity(intent);
                        }
                        dialog.dismiss();
                    }
                });
                dialog.setButtonText("取消","去设置");
                dialog.setContentText("未获取到权限,程序无法正常工作,请设置!");
                dialog.dialogtitle.setVisibility(View.GONE);
                dialog.setCancelable(false);
                dialog.show();
            }
            break;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值