android权限管理之PermissionsDispatcher使用

android权限管理之PermissionsDispatcher使用

使用开源管理框架

使用方法

  • 1.使用Android studio 2.2以上版本

  • 2.添加依赖 到项目的应用gradle文件

       compile 'com.github.hotchemi:permissionsdispatcher:2.3.2'
       annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.3.2'
    
  • 3.示例代码

       @RuntimePermissions
       public class MainActivity extends AppCompatActivity {
    
       private AlertDialog alert = null;
       private AlertDialog.Builder builder = null;
    
       private Button btnRe;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
    
          btnRe = (Button) this.findViewById(R.id.request_permission);
    
          btnRe.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  MainActivityPermissionsDispatcher.showCameraWithCheck(MainActivity.this);
              }
          });
       }
    
    
    
       @NeedsPermission(Manifest.permission.CAMERA)
       void showCamera() {
          alert = null;
          builder = new AlertDialog.Builder(this);
          alert = builder.setIcon(R.mipmap.ic_launcher_round)
                  .setTitle("成功:")
                  .setMessage("拿到了相机权限")
                  .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                          Toast.makeText(MainActivity.this, "你点击了取消按钮~", Toast.LENGTH_SHORT).show();
                      }
                  })
                  .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                          Toast.makeText(MainActivity.this, "你点击了确定按钮~", Toast.LENGTH_SHORT).show();
                      }
                  })
                  .setNeutralButton("中立", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                          Toast.makeText(MainActivity.this, "你点击了中立按钮~", Toast.LENGTH_SHORT).show();
                      }
                  }).create();             //创建AlertDialog对象
            alert.show();                    //显示对话框
         }
    
         @OnShowRationale(Manifest.permission.CAMERA)
         void showRationaleForCamera(final PermissionRequest request) {
          alert = null;
          builder = new AlertDialog.Builder(this);
          alert = builder.setIcon(R.mipmap.ic_launcher_round)
                  .setTitle("提示:")
                  .setMessage("您的应用必须要获得相机权限,否则无法正常工作")
                  .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                          request.cancel();
                      }
                  })
                  .setPositiveButton("同意", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                          request.proceed();
                      }
                  }).create();             //创建AlertDialog对象
               alert.show();                    //显示对话框
    
            }
    
            @OnPermissionDenied(Manifest.permission.CAMERA)
           void showDeniedForCamera() {
           alert = null;
           builder = new AlertDialog.Builder(this);
           alert = builder.setIcon(R.mipmap.ic_launcher_round)
                  .setTitle("提示:")
                  .setMessage("您拒绝了权限,是否重新请求权限")
                  .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
    
                      }
                  })
                  .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                          MainActivityPermissionsDispatcher.showCameraWithCheck(MainActivity.this);
                      }
                  }).create();             //创建AlertDialog对象
            alert.show();                    //显示对话框
            }
    
      @OnNeverAskAgain(Manifest.permission.CAMERA)
      void showNeverAskForCamera() {
          alert = null;
          builder = new AlertDialog.Builder(this);
          alert = builder.setIcon(R.mipmap.ic_launcher_round)
                  .setTitle("提示:")
                  .setMessage("您彻底拒绝了权限,现在是否打开设置去激活?")
                  .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
    
                      }
                  })
                  .setPositiveButton("去激活", new DialogInterface.OnClickListener() {
                      @Override
                      public void onClick(DialogInterface dialog, int which) {
                          Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                          intent.setData(Uri.fromParts("package", getPackageName(), null));
                          startActivity(intent);
                      }
                  }).create();             //创建AlertDialog对象
          alert.show();                    //显示对话框
      }
    
      @Override
      public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
          super.onRequestPermissionsResult(requestCode, permissions, grantResults);
          MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
      }
      }
      
    
  • 4.重构项目

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容