美文网首页
Rxpermission使用记录

Rxpermission使用记录

作者: 奔跑吧小马哥 | 来源:发表于2021-05-27 12:25 被阅读0次

封装一个MyPermissionUtil文件来使用RxPermission:

package com.mike.screensharetest.utils;

import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;

import com.tbruyelle.rxpermissions2.RxPermissions;

import io.reactivex.Observer;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;

public class MyPermissionUtil {
    private static String TAG = MyPermissionUtil.class.getSimpleName();
    public interface MyPermissionListener {
        void onPermissionGranted();
    }

    public static void requestPermission(Activity activity, MyPermissionListener listener, String... permissions) {
        RxPermissions rxPermissions = new RxPermissions(activity);
        rxPermissions.request(permissions)
                .subscribe(new Observer<Boolean>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {
                        Log.d(TAG, "enter onSubscribe");
                    }

                    @Override
                    public void onNext(@NonNull Boolean aBoolean) {
                        Log.d(TAG, "enter onNext");
                        if (aBoolean) {
                            if (listener != null) {
                                listener.onPermissionGranted();
                            } else {

                            }
                        } else {
                            Toast.makeText(activity, "Permission not granted.", Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {
                        Log.d(TAG, "enter onError");
                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG, "enter onComplete");
                    }
                });
    }
}

Activity里使用:

                MyPermissionUtil.requestPermission(MainActivity.this,
                        new MyPermissionUtil.MyPermissionListener() {
                            @Override
                            public void onPermissionGranted() {
                                Log.d(TAG, "permissions granted.");
                            }
                        },
                        Manifest.permission.INTERNET,
                        Manifest.permission.ACCESS_WIFI_STATE,
                        Manifest.permission.RECORD_AUDIO);

AndroidManifest.xml里要声明使用这些permissions

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

相关文章

网友评论

      本文标题:Rxpermission使用记录

      本文链接:https://www.haomeiwen.com/subject/ajwrsltx.html