android在6.0系統以后,權限申請變得麻煩起來,今天介紹一個超級好用的權限申請庫,我在使用中經過再次f封裝,使用起來更加方便。
今天的內容涉及:
1.權限庫依賴
2.申請代碼的調用
3.項目結構圖和效果圖
1.權限庫依賴
在app的build.gradle中做庫依賴:
compile 'com.lovedise:permissiongen:0.0.6'
2.申請代碼的調用
將要申請的權限放到一個數組中,例如你要申請讀寫權限,可以這樣
//申請讀寫權限
String permissions[] = {Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
我將權限申請的繁雜代碼封裝到PermisionHelper中,
然后在要申請權限的地方這樣調用:
PermissionHelper.getInstance().checkPermissions(permissions, MainActivity.this);
當然,你還需要重寫activity的
onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults)
方法,在里面做如下操作:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
PermissionHelper.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults);
}
監聽權限申請成功或失敗,你需要在activity中寫如下兩個方法做接收
@PermissionSuccess(requestCode = PermissionHelper.NORMAL_PERMISSION)
public void requestSuccess(){
showToast("獲取讀寫權限成功!");
//執行你的邏輯操作
//...
}
@PermissionFail(requestCode = PermissionHelper.NORMAL_PERMISSION)
public void requestFail(){
//不給權限就退出
showToast("獲取讀寫權限失敗!");
//執行你的邏輯操作
//...
}
權限使用與接收在activity中完整代碼示例如下:
package com.android.permissiondemo;
import android.Manifest;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import kr.co.namee.permissiongen.PermissionFail;
import kr.co.namee.permissiongen.PermissionSuccess;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtnPermission;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
setListener();
}
private void initView() {
mBtnPermission = findViewById(R.id.btn_permission);
}
private void initData() {
}
private void setListener() {
mBtnPermission.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_permission:
//申請讀寫權限
String permissions[] = {Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE};
PermissionHelper.getInstance().checkPermissions(permissions, MainActivity.this);
break;
default:
break;
}
}
@PermissionSuccess(requestCode = PermissionHelper.NORMAL_PERMISSION)
public void requestSuccess(){
showToast("獲取讀寫權限成功!");
//執行你的邏輯操作
//...
}
@PermissionFail(requestCode = PermissionHelper.NORMAL_PERMISSION)
public void requestFail(){
//不給權限就退出
showToast("獲取讀寫權限失敗!");
//執行你的邏輯操作
//...
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
PermissionHelper.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults);
}
private void showToast(String s){
Toast.makeText(MainActivity.this,s,Toast.LENGTH_SHORT).show();
}
}
然后MainActivity的布局文件activity_main.xml很簡單,這里也貼一下吧,方便大家理解
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_permission"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="權限申請"/>
</RelativeLayout>
最后不要忘了在Mainfast.xml中添加讀寫權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
3.項目結構圖和效果圖
項目結構圖如下:
運行效果圖如下:
android權限申請Permission
注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權