Skip to content

Commit

Permalink
Merge pull request #21 from nasduck/dev
Browse files Browse the repository at this point in the history
Update readme and rm app_name in lib
  • Loading branch information
DONGChuan authored Apr 3, 2019
2 parents 9cef03a + 6137029 commit 2704df3
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 31 deletions.
109 changes: 80 additions & 29 deletions README-CN.md
Original file line number Diff line number Diff line change
@@ -1,87 +1,138 @@
![topic map](https://github.com/nasduck/RafikiPermissions/blob/dev/art/topic%20map.png?raw=true)

[![API](https://img.shields.io/badge/RafikiPermissions-v1.1.2-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14) 
[![API](https://img.shields.io/badge/RafikiPermissions-v1.2.0-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14) 
[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14) 
[![API](https://img.shields.io/badge/License-Apche2.0-brightgreen.svg?style=flat)](https://github.com/nasduck/AfikiPermissions/blob/master/LICENSE)

AfikiPermissions是为了简化Android危险权限动态申请操作,将权限申请判断和权限申请过程简化,将权限申请结果拆分成授予成功和授予失败两部分处理,使结果处理更富有逻辑性。
RafikiPermissions 是为了简化 Android 危险权限动态申请操作,将权限申请判断和权限申请过程简化,将权限申请结果拆分成授予成功和授予失败两部分处理,使结果处理更富有逻辑性。组件名称 Rafiki 拉菲奇来源于狮子王里的狒狒长老,统管权限 :D

* [Google developer - Dangerous Permissions(英文需翻墙)](https://developer.android.com/guide/topics/permissions/overview#permission-groups)
* [官方危险权限列表-中文](https://developer.android.google.cn/guide/topics/permissions/overview#permission-groups)

## 依赖
步骤一:在项目的build.gradle中添加jitpack
```
步骤一:在项目的 `build.gradle` 中添加 `jitpack`

```gradle
allprojects {
repositories {
...
maven { url 'https://www.jitpack.io' }
}
}
```

步骤二:添加依赖项
```

```gradle
dependencies {
implementation 'com.github.nasduck:RafikiPermissions:1.1.2'
implementation 'com.github.nasduck:RafikiPermissions:1.2.0'
}
```

## 使用方式
## 基本使用

#### [详细使用参考文档](https://github.com/nasduck/RafikiPermissions/wiki/%E8%AF%A6%E7%BB%86%E4%BD%BF%E7%94%A8%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3)
### 基本权限申请
一个简单的例子,假设我们需要实现拍照的功能,这时候要动态获取相机的权限**Manifest.permission.CAMERA**
#### 1、添加权限到AndroidManifest.xml
在AndroidManifest.xml中加入相应的权限代码:
```

假设我们需要动态获取相机的权限 `Manifest.permission.CAMERA`

#### 1、添加权限

`AndroidManifest.xml` 中加入相应的权限:

```xml
<uses-permission android:name="android.permission.CAMERA" />
```

#### 2、在BaseActivity中进行返回结果的初始化
```
#### 2、在基类 Activity 中统一进行返回结果的处理

```java
public class BaseActivity extends AppCompatActivity {
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

// 在onRequestPermissionsResult中加入这行代码,传入对应的值
RafikiPermissions.getInstance(this).onResult(requestCode, permissions, grantResults);
}
}
```

#### 3、在继承了BaseActivity的Activity中使用
```
#### 3、在继承了基类的 Activity 中请求权限

```java
// 对于权限是否授予进行判断,已授予返回true,未授予进行权限授予操作
if (RafikiPermissions.getInstance(this)
.setResultStrategy(new PermissionResultCustomStrategy(this)) // 设置自定义的权限授予结果处理策略
.requestCamera()) { // 请求相机权限
// 如果已经授予权限后,需要作的操作逻辑
.setResultStrategy(new PermissionResultCustomStrategy(this)) // 设置自定义的权限授予结果处理策略, 也有其他2种预定义策略
.requestCamera()) {
// 已经授予权限的逻辑操作
...
}
```

#### 4、在回调中进行权限授予后的逻辑处理
```
#### 4、实现授权结果的回调

实现接口 `OnPermissionResultListener`:

```java
@Override
public void onPermissionsResultGrant(int requestCode) {
switch (requestCode) {
// 根据权限对应的requestCode进行权限操作的匹配,授予失败同理
case RafikiResultCode.RESULT_CODE_CAMERA:
// 权限授予成功后的操作
// 权限授予成功
}
}

@Override
public void onPermissionsResultDenied(int requestCode) {
switch (requestCode) {
case RafikiResultCode.RESULT_CODE_CAMERA:
// 权限授予失败后的操作
// 权限授予失败后
}
}
```

### 权限申请策略
之前的例子中已经使用了PermissionResultCustomStrategy,是留给用户自己去实现的权限授予操作后的逻辑,在本库中已经封装了几种策略。
- PermissionResultNothingStrategy——授予权限后不做任何操作
- PermissionResultGuideStrategy——授予权限失败后引导用户去设置中作权限授予
## 权限处理策略

提供三种权限处理策略

1. **PermissionResultNothingStrategy** 默认策略. 无论是否授予策略, 不做任何操作
2. **PermissionResultGuideStrategy** 用户拒绝授予权限后, 弹出弹窗引导用户去应用设置中作权限授予
3. **PermissionResultCustomStrategy** 自定义权限授予策略. 实现 `OnPermissionResultListener` 接口自定义授权回调处理逻辑

## 请求权限不同的方式

##### 请求单个权限

封装了各个权限对应的 .requestXX() 方法. 比如上面例子中, 请求照相权限, 直接调用 `requestCamera()`

##### 请求多个权限

## 联系我们
动态请求多个权限时,根据需要添加相应的权限,最后使用 `request()` 方法请求权限,参数传入自定义的 requestCode(不传则默认为`RafikiResultCode.RAFIKI_PERMISSION_RESULT_CODE`), 用以在回调中识别这次请求:

```java
if (RafikiPermissions.getInstance(this)
.addReadExternalStorage()
.addWriteExternalStorage()
.setResultStrategy(new PermissionResultCustomStrategy(this)) // 设置自定义的权限授予结果处理策略
.request(RESULT_CODE)) {
// 已经授予权限的逻辑操作
}
```

或者使用 `addPermissions()` 设置一组权限

```java
List<String> permissions = new ArrayList();
permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (RafikiPermissions.getInstance(this)
.addPermissions(permissions)
.setResultStrategy(new PermissionResultCustomStrategy(this))
.request(RESULT_CODE)) {
// 已经授予权限的逻辑操作
}
```

## LICENSE
> Copyright
Expand Down
1 change: 0 additions & 1 deletion lib/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">afiki Permissions</string>

<string name="cancel">取消</string>
<string name="grant">去授予</string>
Expand Down
1 change: 0 additions & 1 deletion lib/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<resources>
<string name="app_name">afiki Permissions</string>

<string name="cancel">cancel</string>
<string name="grant">grant</string>
Expand Down

0 comments on commit 2704df3

Please sign in to comment.