Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
yuhao committed Nov 30, 2019
2 parents 9a6b11b + 21da37f commit 7af1b42
Show file tree
Hide file tree
Showing 17 changed files with 891 additions and 458 deletions.
151 changes: 86 additions & 65 deletions bl_data/readme/bl_permission.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,86 @@
# bl_permission说明
bl_permission是一个使用AOP来处理Android6.0后中运行时权限申请的库。

## 配置
在项目的build.gradle中增加
<pre>
buildscript {

repositories {
google()
jcenter()
}
dependencies {
......
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'//aop配置
}
}
</pre>
在编译的主工程和编写Aop代码的模块的build.gradle增加
<pre>
apply plugin: 'android-aspectjx'
</pre>
## 用法
在Activity或者Fragment中在需要权限的方法的上加上注解。需要两个参数一个是请求码request,一个是需要的权限的数组permissions。
<pre>
@RequestPermission(permissions = {Manifest.permission.READ_EXTERNAL_STORAGE}, request = 0)
private void requestSinglePermission(){
tvInfo.setText("申请单个权限被允许");
}

@RequestPermission(permissions = {Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA}, request = 1)
private void requestMultiplePermission(){
tvInfo.setText("申请多个权限被允许");
}
</pre>
因为权限的处理中用户可能会拒绝或者禁止提示,根据灵活性考虑,这个库默认在禁止的时候会弹出提示给用户,一旦自己加入注解就会覆盖默认实现。其他的交给使用者自己处理,
这里在相应处理的方法加入相关注解既可。
<pre>
@RequestPermissionRefuse
private void requestPermissionRefuse(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被拒绝");
break;
case 1:
tvInfo.setText("申请多个权限被拒绝");
break;
}
}

@RequestPermissionForbid
private void requestPermission(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被禁止");
break;
case 1:
tvInfo.setText("申请多个权限被禁止");
break;
}
}
</pre>
## 注意事项
+ 禁止和拒绝的注解在静态方法上不会生效。请求权限的可以在静态方法上使用,但是不推荐这样使用。因为不好自己实现禁止和拒绝的逻辑。
+ 不要在activity生命周期中的onResume使用,因为这边采取方法是自己开一个透明无界面,没大小的activity去请求权限的做法。在请求完之后会一直触发onResume所以造成无限循环。
# bl_permission说明
bl_permission是一个使用AOP来处理Android6.0后中运行时权限申请的库.

## 配置
在项目的build.gradle中增加
<pre>
buildscript {

repositories {
google()
jcenter()
}
dependencies {
......
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'//aop配置
}
}
</pre>
在编译的主工程和编写Aop代码的模块的build.gradle增加
<pre>
apply plugin: 'android-aspectjx'
</pre>
## 初始化
<pre>
AOPRequestPermission.init(application);
</pre>
## 用法
在Activity或者Fragment中在需要权限的方法的上加上注解.需要两个参数一个是请求码request,一个是需要的权限的数组permissions.
还有两个非必须参数,refuseTip和forbidTip.分别为默认实现回调参数.
<pre>
@RequestPermission(permissions = {Manifest.permission.READ_EXTERNAL_STORAGE}, request = 0)
private void requestSinglePermission(){
tvInfo.setText("申请单个权限被允许");
}

@RequestPermission(permissions = {Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA}, request = 1)
private void requestMultiplePermission(){
tvInfo.setText("申请多个权限被允许");
}
</pre>
因为权限的处理中用户可能会拒绝或者禁止提示,加入注解就会覆盖默认实现.这里在相应处理的方法加入相关注解既可.
<pre>
@RequestPermissionRefuse
private void requestPermissionRefuse(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被拒绝");
break;
case 1:
tvInfo.setText("申请多个权限被拒绝");
break;
}
}

@RequestPermissionForbid
private void requestPermission(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被禁止");
break;
case 1:
tvInfo.setText("申请多个权限被禁止");
break;
}
}
</pre>
因为考虑到不同项目可能会有项目统一实现,这里采取的方案是增加默认回调处理.注解上的refuseTip和forbidTip就是这里各自回调的tip.
<pre>
AOPRequestPermission.setFailDefaultCallBack(new PermissionFailDefaultCallBack() {
@Override
public void onRequestRefuse(int requestCode, String refuseTip) {
Log.d("AOPRequestPermission", "onRequestRefuse: ");
}

@Override
public void onRequestForbid(int requestCode, String forbidTip) {
Log.d("AOPRequestPermission", "onRequestForbid: ");
}
});
</pre>
## 注意事项
+ 注解不要在静态方法上使用,不保证能生效.

## 版本说明
V0.0.1 实现悬浮窗权限适配,开放权限失败默认回调,逻辑优化,提供跳转设置页方法.

61 changes: 31 additions & 30 deletions bl_demo/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,31 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bailun.bl_demo">

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".DemoApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".BailunBtnActivity"></activity>
<activity android:name=".listdataview.demo.view.ListDataViewActivity"/>
<activity android:name=".permission.AopPermissionActivity"/>
<activity android:name=".httpOp.HttpOpActivity"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bailun.bl_demo">

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:name=".DemoApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".BailunBtnActivity"></activity>
<activity android:name=".listdataview.demo.view.ListDataViewActivity"/>
<activity android:name=".permission.AopPermissionActivity"/>
<activity android:name=".httpOp.HttpOpActivity"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,77 +1,78 @@
package com.bailun.bl_demo.permission;

import android.Manifest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.bailun.bl_demo.R;
import com.bailun.wangjing.permissionlibrary.annotation.RequestPermission;
import com.bailun.wangjing.permissionlibrary.annotation.RequestPermissionForbid;
import com.bailun.wangjing.permissionlibrary.annotation.RequestPermissionRefuse;

public class AopPermissionActivity extends Activity implements View.OnClickListener {

private TextView tvInfo;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aop_permission);
Button btnSingle = findViewById(R.id.btn_single);
Button btnMultiple = findViewById(R.id.btn_multiple);
tvInfo = findViewById(R.id.tv_info);
btnSingle.setOnClickListener(this);
btnMultiple.setOnClickListener(this);
}


@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_multiple:
requestMultiplePermission();
break;
case R.id.btn_single:
requestSinglePermission();
break;
}
}

@RequestPermission(permissions = {Manifest.permission.READ_EXTERNAL_STORAGE}, request = 0)
private void requestSinglePermission(){
tvInfo.setText("申请单个权限被允许");
}

@RequestPermission(permissions = {Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA}, request = 1)
private void requestMultiplePermission(){
tvInfo.setText("申请多个权限被允许");
}

@RequestPermissionRefuse
private void requestPermissionRefuse(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被拒绝");
break;
case 1:
tvInfo.setText("申请多个权限被拒绝");
break;
}
}

// @RequestPermissionForbid
private void requestPermission(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被禁止");
break;
case 1:
tvInfo.setText("申请多个权限被禁止");
break;
}
}

}
package com.bailun.bl_demo.permission;

import android.Manifest;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.bailun.bl_demo.R;
import com.bailun.wangjing.permissionlibrary.annotation.RequestPermission;
import com.bailun.wangjing.permissionlibrary.annotation.RequestPermissionForbid;
import com.bailun.wangjing.permissionlibrary.annotation.RequestPermissionRefuse;

public class AopPermissionActivity extends FragmentActivity implements View.OnClickListener {

private TextView tvInfo;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aop_permission);
Button btnSingle = findViewById(R.id.btn_single);
Button btnMultiple = findViewById(R.id.btn_multiple);
tvInfo = findViewById(R.id.tv_info);
btnSingle.setOnClickListener(this);
btnMultiple.setOnClickListener(this);
}


@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_multiple:
requestMultiplePermission();
break;
case R.id.btn_single:
requestSinglePermission();
break;
}
}

@RequestPermission(permissions = {Manifest.permission.READ_EXTERNAL_STORAGE}, request = 0)
private void requestSinglePermission(){
tvInfo.setText("申请单个权限被允许");
}

@RequestPermission(permissions = {Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA, Manifest.permission.SYSTEM_ALERT_WINDOW}, request = 1)
private void requestMultiplePermission(){
tvInfo.setText("申请多个权限被允许");
}

@RequestPermissionRefuse
private void requestPermissionRefuse(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被拒绝");
break;
case 1:
tvInfo.setText("申请多个权限被拒绝");
break;
}
}

// @RequestPermissionForbid
private void requestPermission(int request){
switch (request){
case 0:
tvInfo.setText("申请单个权限被禁止");
break;
case 1:
tvInfo.setText("申请多个权限被禁止");
break;
}
}

}
16 changes: 8 additions & 8 deletions bl_permission/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bailun.wangjing.permissionlibrary" >

<application>
<activity android:name=".activity.PermissionRequestActivity" android:theme="@style/Theme.Transparent"/>
</application>

</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bailun.wangjing.permissionlibrary" >

<application>
<activity android:name=".PermissionRequestActivity" android:theme="@style/Theme.Transparent"/>
</application>

</manifest>
Loading

0 comments on commit 7af1b42

Please sign in to comment.