封装一个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" />
网友评论