Rxpermission使用记录

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

相关阅读更多精彩内容

友情链接更多精彩内容