開源代碼地址:https://github.com/tbruyelle/RxPermissions/
其實裏面就3個文件。
1.配置
dependencies {
compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar'
2.使用
import com.tbruyelle.rxpermissions2.RxPermissions; import io.reactivex.*; import io.reactivex.disposables.Disposable;
//權限判斷RxPermissions rxPermissions = new RxPermissions(this);rxPermissions.request(Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE) .subscribe(new Observer<Boolean>() { @Override public void onNext(Boolean granted) { if (granted) { // 在android 6.0之前會默認返回true // 已經獲取權限 //頁面跳轉 handler.postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(LauncherActivity.this, MainActivity.class); startActivity(intent); finish(); } }, 1500); } else { // 未獲取權限 Toast.makeText(LauncherActivity.this, "您沒有授權該權限,請在設置中打開授權", Toast.LENGTH_SHORT).show(); } } @Override public void onSubscribe(Disposable d) { } @Override public void onError(Throwable e) { } @Override public void onComplete() { } });
出現的問題i:
1.我用的rxjava2, 可能會出現
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
File1: C:\Users\Daniel\.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.1.0\748f0546d5c3c27f1aef07270ffea0c45f0c42a4\rxjava-1.1.0.jar
File2: C:\Users\Daniel\.gradle\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.0.1\d2f725668bd22e21170381b23f8fbdf72c69d886\rxjava-2.0.3.jar
這種問題,解決辦法:
//排除掉包版本兼容性問題 packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/rxjava.properties' exclude 'META-INF/rxjava.PROPERTIES' exclude 'META-INF/RXJAVA.properties' exclude 'META-INF/RXJAVA.PROPERTIES' exclude 'META-INF/rxjava' exclude 'META-INF/RXJAVA' }
2.在7.0上可能遇到 檢測到屏幕疊加層
然後你在設置裏怎麼也弄不明白,都不允許也不行。
後來呢~~~ 有人說把360卸了,果真就可以了。。。 這是什麼鬼呀?