开源代码地址: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卸了,果真就可以了。。。 这是什么鬼呀?