Android6.0使用RxPermissions获取运行时权限
来源:互联网 发布:水货导师 知乎 编辑:程序博客网 时间:2024/05/21 05:40
1.添加依赖
compile 'com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar'compile 'io.reactivex:rxjava:1.1.3'
2.在清单文件中加入权限
<uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECEIVE_MMS" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_CALENDAR" />
3.代码实现
MainActivity.java
package com.zhoujian.mpermissions;import android.Manifest;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.tbruyelle.rxpermissions.Permission;import com.tbruyelle.rxpermissions.RxPermissions;import rx.Observable;import rx.functions.Action1;public class MainActivity extends AppCompatActivity { private Button mButtonOne; private Button mButton; private Button mBtnCallPhone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); clickEvent(); } public void initViews() { mButton = (Button) findViewById(R.id.id_btn_button); mButtonOne = (Button) findViewById(R.id.id_button); mBtnCallPhone = (Button) findViewById(R.id.id_btn_callphone); } private void clickEvent() { //打电话的权限,请求单个权限 mBtnCallPhone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RxPermissions mPermissions = RxPermissions.getInstance(MainActivity.this); Observable<Boolean> mRequest = mPermissions.request(Manifest.permission.CALL_PHONE); mRequest.subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { if (aBoolean) { Toast.makeText(MainActivity.this, "获取打电话权限成功", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + 10086)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Toast.makeText(MainActivity.this, "获取打电话权限失败", Toast.LENGTH_SHORT).show(); } } }); } }); //同时请求多个权限 mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RxPermissions.getInstance(MainActivity.this) .request(Manifest.permission.RECEIVE_MMS, Manifest.permission.READ_CALL_LOG)//多个权限用","隔开 .subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { if (aBoolean) { //当所有权限都允许之后,返回true Toast.makeText(MainActivity.this, "权限允许", Toast.LENGTH_SHORT).show(); } else { //只要有一个权限禁止,返回false Toast.makeText(MainActivity.this, "拒绝", Toast.LENGTH_SHORT).show(); } } }); } }); //分别申请多个权限 mButtonOne.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RxPermissions.getInstance(MainActivity.this) //分别申请多个权限时,使用requestEach .requestEach(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA) .subscribe(new Action1<Permission>() { @Override public void call(Permission permission) { if (permission.name.equals(Manifest.permission.ACCESS_FINE_LOCATION)) { //当ACCESS_FINE_LOCATION权限获取成功时,permission.granted=true Log.i("permissions", Manifest.permission.ACCESS_FINE_LOCATION + ":" + permission.granted); } if (permission.name.equals(Manifest.permission.RECORD_AUDIO)) { //当RECORD_AUDIO 权限获取成功时,permission.granted=true Log.i("permissions", Manifest.permission.RECORD_AUDIO + ":" + permission.granted); } if (permission.name.equals(Manifest.permission.CAMERA)) { //当CAMERA权限获取成功时,permission.granted=true Log.i("permissions", Manifest.permission.CAMERA + ":" + permission.granted); } } }); } }); }}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <Button android:id="@+id/id_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="分别请求多个权限"/> <Button android:id="@+id/id_btn_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="同时请求多个权限"/> <Button android:id="@+id/id_btn_callphone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请求单个权限"/></LinearLayout>
阅读全文
0 0
- Android6.0使用RxPermissions获取运行时权限
- Android6.0运行时权限以及RxPermissions的使用
- Android6.0运行时权限解析,RxPermissions的使用
- Android6.0运行时权限解析,RxPermissions的使用,自己封装一套权限框架
- Android6.0运行时权限解析,RxPermissions的使用,自己封装一套权限框架
- RxPermissions 获取运行时权限
- Android6.0------权限申请RxPermissions
- Android基础知识---RxPermissions获取运行时权限
- Android动态获取运行时权限RxPermissions
- android6.0新权限申请以及RxPermissions库的使用
- android6.0权限适配RxPermissions
- RxPermissions源码分析:使用RxJava处理Android 6.0运行时动态权限获取
- RxPermissions源码分析:使用RxJava处理Android 6.0运行时动态权限获取
- android——RxPermissions获取运行时权限
- android 运行时权限解析RxPermissions的使用
- Android6.0权限管理到RxPermissions源码分析
- Android6.0 运行时权限
- Android6.0 运行时权限
- 5-6 列出连通集
- bzoj 1606 [Usaco2008 Dec]Hay For Sale 购买干草(01背包)
- js回车事件触发
- 题目——三个文件
- iFunk S游戏本,乐享视听盛宴
- Android6.0使用RxPermissions获取运行时权限
- Android旋转动画rotate动画,xml配置set实现
- 神经网络中梯度消失的原因
- <动物庄园>读后感
- HDU 6112 今夕何夕
- android zxing使用笔记
- 重构-既有代码
- 将导入arcgis的Excel中的坐标点转成与影像一样的投影
- Blocks (矩阵快速幂)