EasyPermission 的使用方式 记录一下

一切尽在代码中

package rjh.yilin.ui.activity;

import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.View;

import java.io.File;
import java.util.List;

import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
import rjh.yilin.R;
import rjh.yilin.app.AppConstants;
import rjh.yilin.app.AppManager;
import rjh.yilin.base.BaseActivity;
import rjh.yilin.utils.LogUtils;
import rjh.yilin.utils.YiLinUtils;

/**
 * Created by 于德海 on 2018/8/30.
 * package rjh.yilin.ui.activity
 * email : yudehai0204@163.com
 *
 * @describe
 */
public class FirstActivity extends BaseActivity implements EasyPermissions.PermissionCallbacks {
    //要请求的权限
    private String permissions[] = new String[]{
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.CALL_PHONE,
            Manifest.permission.READ_PHONE_STATE,
            Manifest.permission.ACCESS_NETWORK_STATE
    };

    @Override
    protected void initParam(Bundle param) {
    }

    @Override
    protected int getLayoutId() {
        return R.layout.aty_first;
    }

    @Override
    protected void initView() {
        if (EasyPermissions.hasPermissions(this, permissions)) {//判断是否拥有权限
            goMain();//获取权限后进行页面跳转
        } else {
            //请求权限
            EasyPermissions.requestPermissions(this, "请求必要的权限,拒绝权限可能会无法使用app", 0, permissions);
        }


    }

    @Override
    protected void initData() {

    }

    @Override
    protected void initListener() {

    }

    @Override
    public void onClick(View v) {

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);//将第三方权限框架与activity绑定
    }

    private void goMain() {
        File file = new File(AppConstants.FILE_DIR);
        if(!file.exists()){
            file.mkdir();
        }
        Observable.create(new ObservableOnSubscribe<Object>() {
            @Override
            public void subscribe(ObservableEmitter<Object> emitter) throws Exception {
                Thread.sleep(2000);
                emitter.onComplete();
            }
        }).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Object>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Object o) {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {
                        startActivity(new Intent(FirstActivity.this, MainActivity.class));
                        YiLinUtils.DelaycloseActivity(FirstActivity.this);
                    }
                });
    }

    @Override
    public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {//权限全部同意
        LogUtils.e("成功" + perms.size());
        goMain();
    }

    @Override
    public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {//拒绝了部分权限
        LogUtils.e("失败");
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {//拒绝权限且点击了不再提示
            new AppSettingsDialog.Builder(this).build().show();//跳转应用设置页面
        } else {
            EasyPermissions.requestPermissions(this, "请求必要的权限,拒绝权限可能会无法使用app", 1, perms.toArray(new String[perms.size()]));
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            //当从软件设置界面,返回当前程序时候
            case AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE:
                if (EasyPermissions.hasPermissions(this, permissions)) {
                    goMain();
                } else {
                    AppManager.getInstance().AppExit();
                }
                break;

        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
EasyPermission和PermissionX都是用于简化Android运行时权限处理的库,可以帮助开发者更方便地处理权限问题。 EasyPermission是一个第三方库,它可以帮助开发者更方便地处理Android 6.0及以上版本的运行时权限。使用EasyPermission,开发者可以在Activity或Fragment中轻松地申请权限,并且可以处理权限申请的回调。以下是使用EasyPermission的一个例子: ```java // 在Activity或Fragment中 EasyPermissions.requestPermissions(this, "需要获取权限", 100, Manifest.permission.CAMERA); // 处理权限申请的回调 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } @AfterPermissionGranted(100) public void openCamera() { if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA)) { // 已经获取到权限,可以打开相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); } else { // 没有获取到权限,申请权限 EasyPermissions.requestPermissions(this, "需要获取权限", 100, Manifest.permission.CAMERA); } } ``` PermissionX是郭霖大神发布的一个库,它可以帮助开发者更方便地处理Android 6.0及以上版本的运行时权限。使用PermissionX,开发者可以使用链式调用的方式申请权限,并且可以处理权限申请的回调。以下是使用PermissionX的一个例子: ```kotlin // 在Activity或Fragment中 PermissionX.init(this) .permissions(Manifest.permission.CAMERA) .request { allGranted, grantedList, deniedList -> if (allGranted) { // 已经获取到权限,可以打开相机 val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) startActivityForResult(intent, 1) } else { // 没有获取到权限,申请权限 Toast.makeText(this, "您拒绝了以下权限:$deniedList", Toast.LENGTH_SHORT).show() } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫的于

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值