适配6.0-PermissionsDispatcher_Demo

github: https://github.com/hotchemi/PermissionsDispatcher

package com.example.administrator.myapplication;

import android.Manifest;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;


import permissions.dispatcher.NeedsPermission;
import permissions.dispatcher.OnNeverAskAgain;
import permissions.dispatcher.OnPermissionDenied;
import permissions.dispatcher.OnShowRationale;
import permissions.dispatcher.PermissionRequest;
import permissions.dispatcher.RuntimePermissions;

@RuntimePermissions
public class MainActivity extends AppCompatActivity {
    private final String TAG = "MainActivity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // MainActivityPermissionsDispatcher这个类由 类名+PermissionsDispatcher 组成
        // 在编译过程中动态生成, 生成的目录在 app/build/generated/source/apt/debug/包名
        // 在运行时, 会调用 @NeedsPermission注解下面的方法, demo里既是take()
        MainActivityPermissionsDispatcher.takeWithCheck(this);
    }

    @NeedsPermission(Manifest.permission.CAMERA)
    void take() {
        Log.d(TAG, "NeedsPermission");
        startCamera();
    }

    // 第一次出现授权提示出现后, 选择拒绝, 下次再进入才会出现
    @OnShowRationale(Manifest.permission.CAMERA)
    void show(final PermissionRequest request) {
        Log.d(TAG, "OnShowRationale");
        new AlertDialog.Builder(this)
                .setMessage("再次请求授权吗?")
                .setPositiveButton("确定", new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 再次请求授权(带有不再提示选项)
                        request.proceed();
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 执行 OnPermissionDenied注解下面的方法
                        request.cancel();
                    }
                })
                .show();
    }

    // 每次拒绝都会调用一次, 【请求授权】或者request.cancel();
    @OnPermissionDenied(Manifest.permission.CAMERA)
    void denied() {
        Log.d(TAG, "OnPermissionDenied");
    }

    // 当勾选这个以后, 每次进入页面都会调用一次
    @OnNeverAskAgain(Manifest.permission.CAMERA)
    void showNeverAskForCamera(){
        Log.d(TAG, "OnNeverAskAgain");
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        Log.d(TAG, "requestCode = " + requestCode);
        MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
    }


    // 启动相机
    private void startCamera() {
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        startActivity(intent);
    }


    // 问题
    // 1.第一次进入选择运行, 没有启动照相机, 既是不调用 @NeedsPermission注解下面的方法
    // 2.不知道如何执行neverAskAgain()

    // 解决
    // 补上onRequestPermissionsResult可以解决

}

更新时间 2017年10月27日17:37:42

最新包版本为3.0.1;

经测试,在第一次进入申请权限时黑屏,应用直接被杀掉;


更新2017年10月30日09:24:06

经反复测试,黑屏的原因是因为申请权限的Activty在注册时声明为
android:noHistory=”true”,去掉这个属性即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我的电脑显卡是NVIDIA CUDA 11.6.114 driver,win10,64位的,在安装Anaconda时,有如下几个版本:Anaconda-1.4.0-Windows-x86_64.exe 241.4 MiB 2013-07-04 17:58 Anaconda-1.5.0-Linux-x86.sh 238.8 MiB 2013-07-04 18:10 Anaconda-1.5.0-Linux-x86_64.sh 306.7 MiB 2013-07-04 18:22 Anaconda-1.5.0-MacOSX-x86_64.sh 166.2 MiB 2013-07-04 18:37 Anaconda-1.5.0-Windows-x86.exe 236.0 MiB 2013-07-04 18:45 Anaconda-1.5.0-Windows-x86_64.exe 280.4 MiB 2013-07-04 18:57 Anaconda-1.5.1-MacOSX-x86_64.sh 166.2 MiB 2013-07-04 19:11 Anaconda-1.6.0-Linux-x86.sh 241.6 MiB 2013-07-04 19:19 Anaconda-1.6.0-Linux-x86_64.sh 309.5 MiB 2013-07-04 19:32 Anaconda-1.6.0-MacOSX-x86_64.sh 169.0 MiB 2013-07-04 19:47 Anaconda-1.6.0-Windows-x86.exe 244.9 MiB 2013-07-04 19:56 Anaconda-1.6.0-Windows-x86_64.exe 290.4 MiB 2013-07-04 20:09 Anaconda-1.6.1-Linux-x86.sh 247.1 MiB 2013-07-05 08:34 Anaconda-1.6.1-Linux-x86_64.sh 317.6 MiB 2013-07-05 09:20 Anaconda-1.6.1-MacOSX-x86_64.pkg 197.3 MiB 2013-07-05 10:05 Anaconda-1.6.1-MacOSX-x86_64.sh 170.0 MiB 2013-07-05 12:20 Anaconda-1.6.1-Windows-x86.exe 244.4 MiB 2013-07-05 12:29 Anaconda-1.6.1-Windows-x86_64.exe 289.9 MiB 2013-07-05 12:49 Anaconda-1.6.2-Windows-x86.exe 244.4 MiB 2013-07-10 06:19 Anaconda-1.6.2-Windows-x86_64.exe 289.9 MiB 2013-07-10 07:04 Anaconda-1.7.0-Linux-x86.sh 381.0 MiB 2013-09-20 01:04 Anaconda-1.7.0-Linux-x86_64.sh 452.6 MiB 2013-09-20 02:49 Anaconda-1.7.0-MacOSX-x86_64.pkg 256.7 MiB 2013-09-20 05:04 Anaconda-1.7.0-MacOSX-x86_64.sh 223.3 MiB 2013-09-20 11:00 Anaconda-1.7.0-Windows-x86.exe 280.6 MiB 2013-09-20 11:11 Anaconda-1.7.0-Windows-x86_64.exe,请问我应该安装哪一个?
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值