MainActivity

 

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        ImageView img = (ImageView) findViewById(R.id.img);
        ImageManager.bindImage(img, R.mipmap.ic_main, this);
    }
  • getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

 

    protected void onResume() {
        super.onResume();
        hideBottomUIMenu();
        if (isFirst) {
            isFirst = false;
            new CountDownTimer(2000, 1000) {

                @Override
                public void onTick(long millisUntilFinished) {

                }

                @Override
                public void onFinish() {
                    checkPermission();
                }
            }.start();
        }
    }

    protected void hideBottomUIMenu() {
        //隐藏虚拟按键,并且全屏
        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
            View v = this.getWindow().getDecorView();
            v.setSystemUiVisibility(View.GONE);
        } else if (Build.VERSION.SDK_INT >= 19) {
            //for new api versions.
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }
  • new CountDownTimer(2000, 1000){  }

 

    public void checkPermission() {

        //必要的权限申请提示对话框
        final NecessaryPerDialog necessaryPerDialog = new NecessaryPerDialog(mContext, PERMISSIONS,false);

        necessaryPerDialog.setOnClickBtnListener(new NecessaryPerDialog.OnClickBtnListener() {
            @Override
            public void onAgree() {
                //申请权限
                ActivityCompat.requestPermissions((Activity) mContext,PERMISSIONS,1);
                necessaryPerDialog.dismiss();
            }

            @Override
            public void onRefuse() {
                finish();
            }
        });
        if (!hasAllPermission()) {
            necessaryPerDialog.show();

        } else {
            forwardMain();
        }

    }
  •  Dialog

 

    public void onBackPressed() {

    }

申请权限:

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

        boolean hasAllGranted = true;
        for (int i = 0; i < grantResults.length; ++i) {
            if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
                hasAllGranted = false;
                //在用户已经拒绝授权的情况下,如果shouldShowRequestPermissionRationale返回false则
                // 可以推断出用户选择了“不在提示”选项,在这种情况下需要引导用户至设置页手动授权
                if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {
                    //解释原因,并且引导用户至设置页手动授权

                    final ToPermisstionSettingDialog settingDialog = new ToPermisstionSettingDialog(mContext, "请到设置页面,开放读写储存权限、读取手机状态、定位权限,以便于我们提供为您更好的服务");
                    settingDialog.setOnClickBtnListener(new ToPermisstionSettingDialog.OnClickBtnListener() {
                        @Override
                        public void onClick() {
                            settingDialog.dismiss();
                            //引导用户至设置页手动授权
                            Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                            Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null);
                            intent.setData(uri);
                            startActivityForResult(intent,2);
                        }

                        @Override
                        public void onCancel() {
                            finish();
                        }
                    });
                    settingDialog.show();

                } else {
                    //权限请求失败,但未选中“不再提示”选项
                    finish();
                }
                break;
            }
        }
        if (hasAllGranted) {
            //权限请求成功
            forwardMain();
        }
    }

权限申请:

ContextCompat.checkSelfPermission
检查应用是否具有某个危险权限。如果应用具有此权限,方法将返回 PackageManager.PERMISSION_GRANTED,并且应用可以继续操作。如果应用不具有此权限,方法将返回 PackageManager.PERMISSION_DENIED且应用必须明确向用户要求权限ActivityCompat.requestPermissions
应用可以通过这个方法动态申请权限,调用后会弹出一个对话框提示用户授权所申请的权限。ActivityCompat.shouldShowRequestPermissionRationale
如果应用之前请求过此权限但用户拒绝了请求,此方法将返回 true。如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don't ask again 选项,此方法将返回 false。如果设备规范禁止应用具有该权限,此方法也会返回 false。onRequestPermissionsResult
当应用请求权限时,系统将向用户显示一个对话框。当用户响应时,系统将调用应用的 onRequestPermissionsResult() 方法,向其传递用户响应,处理对应的场景。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值