Skip to content

Commit 9cef03a

Browse files
authored
Merge pull request #19 from nasduck/dev
1.2.0
2 parents a6a7fab + 2034ad6 commit 9cef03a

34 files changed

+441
-369
lines changed

README-CN.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
![topic map](https://github.com/nasduck/RafikiPermissions/blob/dev/art/topic%20map.png?raw=true)
2+
3+
[![API](https://img.shields.io/badge/RafikiPermissions-v1.1.2-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14) 
4+
[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14) 
5+
[![API](https://img.shields.io/badge/License-Apche2.0-brightgreen.svg?style=flat)](https://github.com/nasduck/AfikiPermissions/blob/master/LICENSE)
6+
7+
AfikiPermissions是为了简化Android危险权限动态申请操作,将权限申请判断和权限申请过程简化,将权限申请结果拆分成授予成功和授予失败两部分处理,使结果处理更富有逻辑性。
8+
9+
## 依赖
10+
步骤一:在项目的build.gradle中添加jitpack
11+
```
12+
allprojects {
13+
repositories {
14+
...
15+
maven { url 'https://www.jitpack.io' }
16+
}
17+
}
18+
```
19+
步骤二:添加依赖项
20+
```
21+
dependencies {
22+
implementation 'com.github.nasduck:RafikiPermissions:1.1.2'
23+
}
24+
```
25+
26+
## 使用方式
27+
#### [详细使用参考文档](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)
28+
### 基本权限申请
29+
一个简单的例子,假设我们需要实现拍照的功能,这时候要动态获取相机的权限**Manifest.permission.CAMERA**
30+
#### 1、添加权限到AndroidManifest.xml
31+
在AndroidManifest.xml中加入相应的权限代码:
32+
```
33+
<uses-permission android:name="android.permission.CAMERA" />
34+
```
35+
36+
#### 2、在BaseActivity中进行返回结果的初始化
37+
```
38+
public class BaseActivity extends AppCompatActivity {
39+
@Override
40+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
41+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
42+
// 在onRequestPermissionsResult中加入这行代码,传入对应的值
43+
RafikiPermissions.getInstance(this).onResult(requestCode, permissions, grantResults);
44+
}
45+
}
46+
```
47+
48+
#### 3、在继承了BaseActivity的Activity中使用
49+
```
50+
// 对于权限是否授予进行判断,已授予返回true,未授予进行权限授予操作
51+
if (RafikiPermissions.getInstance(this)
52+
.setResultStrategy(new PermissionResultCustomStrategy(this)) // 设置自定义的权限授予结果处理策略
53+
.requestCamera()) { // 请求相机权限
54+
// 如果已经授予权限后,需要作的操作逻辑
55+
}
56+
```
57+
58+
#### 4、在回调中进行权限授予后的逻辑处理
59+
```
60+
@Override
61+
public void onPermissionsResultGrant(int requestCode) {
62+
switch (requestCode) {
63+
// 根据权限对应的requestCode进行权限操作的匹配,授予失败同理
64+
case RafikiResultCode.RESULT_CODE_CAMERA:
65+
// 权限授予成功后的操作
66+
}
67+
}
68+
69+
@Override
70+
public void onPermissionsResultDenied(int requestCode) {
71+
switch (requestCode) {
72+
case RafikiResultCode.RESULT_CODE_CAMERA:
73+
// 权限授予失败后的操作
74+
}
75+
}
76+
```
77+
78+
### 权限申请策略
79+
之前的例子中已经使用了PermissionResultCustomStrategy,是留给用户自己去实现的权限授予操作后的逻辑,在本库中已经封装了几种策略。
80+
- PermissionResultNothingStrategy——授予权限后不做任何操作
81+
- PermissionResultGuideStrategy——授予权限失败后引导用户去设置中作权限授予
82+
83+
## 联系我们
84+
85+
86+
## LICENSE
87+
> Copyright
88+
>
89+
> Licensed under the Apache License, Version 2.0 (the "License");
90+
> you may not use this file except in compliance with the License.
91+
> You may obtain a copy of the License at
92+
>
93+
> http://www.apache.org/licenses/LICENSE-2.
94+
>
95+
> Unless required by applicable law or agreed to in writing, software
96+
> distributed under the License is distributed on an "AS IS" BASIS,
97+
> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
98+
> the License for the specific language governing permissions and
99+
> limitations under the License.

app/src/main/AndroidManifest.xml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.nasduck.duckpermission.demo">
3+
package="com.nasduck.rafikipermissions.demo">
44
<!-- Dangerous permissions and permission groups -->
55
<!-- https://developer.android.google.cn/guide/topics/permissions/overview#permission-groups -->
66
<!-- CALENDAR -->
@@ -43,24 +43,24 @@
4343
android:label="@string/app_name"
4444
android:supportsRtl="true"
4545
android:theme="@style/AppTheme">
46-
<activity android:name=".PermissionListActivity"></activity>
47-
<activity android:name=".MainActivity">
46+
<activity android:name="com.nasduck.rafikipermissions.demo.PermissionListActivity"></activity>
47+
<activity android:name="com.nasduck.rafikipermissions.demo.MainActivity">
4848
<intent-filter>
4949
<action android:name="android.intent.action.MAIN" />
5050

5151
<category android:name="android.intent.category.LAUNCHER" />
5252
</intent-filter>
5353
</activity>
54-
<activity android:name=".permissions.StorageActivity" />
55-
<activity android:name=".permissions.SMSActivity" />
56-
<activity android:name=".permissions.SensorsActivity" />
57-
<activity android:name=".permissions.PhoneActivity" />
58-
<activity android:name=".permissions.MicrophoneActivity" />
59-
<activity android:name=".permissions.LocationActivity" />
60-
<activity android:name=".permissions.ContactsActivity" />
61-
<activity android:name=".permissions.CameraActivity" />
62-
<activity android:name=".permissions.CalendarActivity" />
63-
<activity android:name=".strategy.StrategyActivity" />
54+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.StorageActivity" />
55+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.SMSActivity" />
56+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.SensorsActivity" />
57+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.PhoneActivity" />
58+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.MicrophoneActivity" />
59+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.LocationActivity" />
60+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.ContactsActivity" />
61+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.CameraActivity" />
62+
<activity android:name="com.nasduck.rafikipermissions.demo.permissions.CalendarActivity" />
63+
<activity android:name="com.nasduck.rafikipermissions.demo.strategy.StrategyActivity" />
6464
</application>
6565

6666
</manifest>

app/src/main/java/com/nasduck/duckpermission/demo/MainActivity.java renamed to app/src/main/java/com/nasduck/rafikipermissions/demo/MainActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package com.nasduck.duckpermission.demo;
1+
package com.nasduck.rafikipermissions.demo;
22

33
import android.content.Intent;
44
import android.support.v7.app.AppCompatActivity;
55
import android.os.Bundle;
66
import android.view.View;
77

8-
import com.nasduck.duckpermission.demo.strategy.StrategyActivity;
8+
import com.nasduck.rafikipermissions.demo.strategy.StrategyActivity;
99

1010
public class MainActivity extends AppCompatActivity {
1111

app/src/main/java/com/nasduck/duckpermission/demo/PermissionListActivity.java renamed to app/src/main/java/com/nasduck/rafikipermissions/demo/PermissionListActivity.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.nasduck.duckpermission.demo;
1+
package com.nasduck.rafikipermissions.demo;
22

33
import android.content.Intent;
44
import android.support.v7.app.AppCompatActivity;
@@ -7,15 +7,15 @@
77
import android.view.MenuItem;
88
import android.view.View;
99

10-
import com.nasduck.duckpermission.demo.permissions.CalendarActivity;
11-
import com.nasduck.duckpermission.demo.permissions.CameraActivity;
12-
import com.nasduck.duckpermission.demo.permissions.ContactsActivity;
13-
import com.nasduck.duckpermission.demo.permissions.LocationActivity;
14-
import com.nasduck.duckpermission.demo.permissions.MicrophoneActivity;
15-
import com.nasduck.duckpermission.demo.permissions.PhoneActivity;
16-
import com.nasduck.duckpermission.demo.permissions.SMSActivity;
17-
import com.nasduck.duckpermission.demo.permissions.SensorsActivity;
18-
import com.nasduck.duckpermission.demo.permissions.StorageActivity;
10+
import com.nasduck.rafikipermissions.demo.permissions.CalendarActivity;
11+
import com.nasduck.rafikipermissions.demo.permissions.CameraActivity;
12+
import com.nasduck.rafikipermissions.demo.permissions.ContactsActivity;
13+
import com.nasduck.rafikipermissions.demo.permissions.LocationActivity;
14+
import com.nasduck.rafikipermissions.demo.permissions.MicrophoneActivity;
15+
import com.nasduck.rafikipermissions.demo.permissions.PhoneActivity;
16+
import com.nasduck.rafikipermissions.demo.permissions.SMSActivity;
17+
import com.nasduck.rafikipermissions.demo.permissions.SensorsActivity;
18+
import com.nasduck.rafikipermissions.demo.permissions.StorageActivity;
1919

2020
public class PermissionListActivity extends AppCompatActivity {
2121

app/src/main/java/com/nasduck/duckpermission/demo/base/BaseActivity.java renamed to app/src/main/java/com/nasduck/rafikipermissions/demo/base/BaseActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.nasduck.duckpermission.demo.base;
1+
package com.nasduck.rafikipermissions.demo.base;
22

33
import android.content.Intent;
44
import android.net.Uri;
@@ -8,15 +8,15 @@
88
import android.support.v7.app.AppCompatActivity;
99
import android.view.MenuItem;
1010

11-
import com.nasduck.duckpermission.DuckPermission;
11+
import com.nasduck.rafikipermissions.RafikiPermissions;
1212

1313
public class BaseActivity extends AppCompatActivity {
1414

1515
@Override
1616
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
1717
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
1818

19-
DuckPermission.getInstance(this)
19+
RafikiPermissions.getInstance(this)
2020
.onResult(requestCode, permissions, grantResults);
2121
}
2222

app/src/main/java/com/nasduck/duckpermission/demo/permissions/CalendarActivity.java renamed to app/src/main/java/com/nasduck/rafikipermissions/demo/permissions/CalendarActivity.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
package com.nasduck.duckpermission.demo.permissions;
1+
package com.nasduck.rafikipermissions.demo.permissions;
22

33
import android.os.Bundle;
44
import android.support.v7.widget.Toolbar;
55
import android.view.View;
66
import android.widget.Toast;
77

8-
import com.nasduck.duckpermission.DuckPermission;
9-
import com.nasduck.duckpermission.demo.R;
10-
import com.nasduck.duckpermission.demo.base.BaseActivity;
11-
import com.nasduck.duckpermission.demo.utils.ToastUtils;
12-
import com.nasduck.duckpermission.result.code.DuckResultCode;
13-
import com.nasduck.duckpermission.result.listener.OnPermissionResultListener;
14-
import com.nasduck.duckpermission.result.strategy.impl.PermissionResultCustomStrategy;
8+
import com.nasduck.rafikipermissions.RafikiPermissions;
9+
import com.nasduck.rafikipermissions.demo.R;
10+
import com.nasduck.rafikipermissions.demo.base.BaseActivity;
11+
import com.nasduck.rafikipermissions.demo.utils.ToastUtils;
12+
import com.nasduck.rafikipermissions.result.code.RafikiResultCode;
13+
import com.nasduck.rafikipermissions.result.listener.OnPermissionResultListener;
14+
import com.nasduck.rafikipermissions.result.strategy.impl.PermissionResultCustomStrategy;
1515

1616
public class CalendarActivity extends BaseActivity implements
1717
OnPermissionResultListener {
@@ -35,15 +35,15 @@ public void onClick(View v) {
3535
}
3636

3737
public void onReadCalendarClick(View view) {
38-
if (DuckPermission.getInstance(this)
38+
if (RafikiPermissions.getInstance(this)
3939
.setResultStrategy(new PermissionResultCustomStrategy(this))
4040
.requestReadCalendar()) {
4141
Toast.makeText(this, "Already granted read calendar permission", Toast.LENGTH_SHORT).show();
4242
}
4343
}
4444

4545
public void onWriteCalendarClick(View view) {
46-
if (DuckPermission.getInstance(this)
46+
if (RafikiPermissions.getInstance(this)
4747
.setResultStrategy(new PermissionResultCustomStrategy(this))
4848
.requestWriteCalendar()) {
4949
Toast.makeText(this, "Already granted write calendar permission", Toast.LENGTH_SHORT).show();
@@ -53,10 +53,10 @@ public void onWriteCalendarClick(View view) {
5353
@Override
5454
public void onPermissionsResultGrant(int requestCode) {
5555
switch (requestCode) {
56-
case DuckResultCode.RESULT_CODE_READ_CALENDAR:
56+
case RafikiResultCode.RESULT_CODE_READ_CALENDAR:
5757
ToastUtils.showToast(this, "Read Calendar Granted");
5858
break;
59-
case DuckResultCode.RESULT_CODE_WRITE_CALENDAR:
59+
case RafikiResultCode.RESULT_CODE_WRITE_CALENDAR:
6060
ToastUtils.showToast(this, "Write Calendar Granted");
6161
break;
6262
}
@@ -65,10 +65,10 @@ public void onPermissionsResultGrant(int requestCode) {
6565
@Override
6666
public void onPermissionsResultDenied(int requestCode) {
6767
switch (requestCode) {
68-
case DuckResultCode.RESULT_CODE_READ_CALENDAR:
68+
case RafikiResultCode.RESULT_CODE_READ_CALENDAR:
6969
ToastUtils.showToast(this, "Read Calendar Denied");
7070
break;
71-
case DuckResultCode.RESULT_CODE_WRITE_CALENDAR:
71+
case RafikiResultCode.RESULT_CODE_WRITE_CALENDAR:
7272
ToastUtils.showToast(this, "Write Calendar Denied");
7373
break;
7474
}

app/src/main/java/com/nasduck/duckpermission/demo/permissions/CameraActivity.java renamed to app/src/main/java/com/nasduck/rafikipermissions/demo/permissions/CameraActivity.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
package com.nasduck.duckpermission.demo.permissions;
1+
package com.nasduck.rafikipermissions.demo.permissions;
22

33
import android.os.Bundle;
44
import android.support.v7.widget.Toolbar;
55
import android.view.View;
66
import android.widget.Toast;
77

8-
import com.nasduck.duckpermission.DuckPermission;
9-
import com.nasduck.duckpermission.demo.R;
10-
import com.nasduck.duckpermission.demo.base.BaseActivity;
11-
import com.nasduck.duckpermission.demo.utils.ToastUtils;
12-
import com.nasduck.duckpermission.result.code.DuckResultCode;
13-
import com.nasduck.duckpermission.result.listener.OnPermissionResultListener;
14-
import com.nasduck.duckpermission.result.strategy.impl.PermissionResultCustomStrategy;
8+
import com.nasduck.rafikipermissions.RafikiPermissions;
9+
import com.nasduck.rafikipermissions.demo.R;
10+
import com.nasduck.rafikipermissions.demo.base.BaseActivity;
11+
import com.nasduck.rafikipermissions.demo.utils.ToastUtils;
12+
import com.nasduck.rafikipermissions.result.code.RafikiResultCode;
13+
import com.nasduck.rafikipermissions.result.listener.OnPermissionResultListener;
14+
import com.nasduck.rafikipermissions.result.strategy.impl.PermissionResultCustomStrategy;
1515

1616
public class CameraActivity extends BaseActivity implements
1717
OnPermissionResultListener {
@@ -35,7 +35,7 @@ public void onClick(View v) {
3535
}
3636

3737
public void onCameraClick(View view) {
38-
if (DuckPermission.getInstance(this)
38+
if (RafikiPermissions.getInstance(this)
3939
.setResultStrategy(new PermissionResultCustomStrategy(this))
4040
.requestCamera()) {
4141
Toast.makeText(this, "Already granted camera permission", Toast.LENGTH_SHORT).show();
@@ -45,7 +45,7 @@ public void onCameraClick(View view) {
4545
@Override
4646
public void onPermissionsResultGrant(int requestCode) {
4747
switch (requestCode) {
48-
case DuckResultCode.RESULT_CODE_CAMERA:
48+
case RafikiResultCode.RESULT_CODE_CAMERA:
4949
ToastUtils.showToast(this, "Camera Granted");
5050
break;
5151
}
@@ -54,7 +54,7 @@ public void onPermissionsResultGrant(int requestCode) {
5454
@Override
5555
public void onPermissionsResultDenied(int requestCode) {
5656
switch (requestCode) {
57-
case DuckResultCode.RESULT_CODE_CAMERA:
57+
case RafikiResultCode.RESULT_CODE_CAMERA:
5858
ToastUtils.showToast(this, "Camera Denied");
5959
break;
6060
}

0 commit comments

Comments
 (0)