Android XXPermissions 1行のコードは動的権限の取得を完了します
6238 ワード
まずXXPermissionsフレームワークアドレスを添付します.https://github.com/getActivity/XXPermissions
XXPermissionsフレームワークは確かに簡単で速いです.私はXXPermissionsフレームワークの便利な基礎の上で、また簡単にカプセル化しました.多くのappが初期化時にすべての危険権限を尋ねるのに適しています.呼び出しタイミングが初期化されたとき、危険な権限が必要なメソッドが呼び出されていない場合、具体的な方法は次のとおりです.
次の操作を行います.
基本機能:
このように简単で、问题があってみんなに指摘することを望んで、意见があってみんなに指导することを望んで、ありがとうございます!転載、写しが必要な場合は、出典を明記してください.ありがとうございます.
XXPermissionsフレームワークは確かに簡単で速いです.私はXXPermissionsフレームワークの便利な基礎の上で、また簡単にカプセル化しました.多くのappが初期化時にすべての危険権限を尋ねるのに適しています.呼び出しタイミングが初期化されたとき、危険な権限が必要なメソッドが呼び出されていない場合、具体的な方法は次のとおりです.
public class NBPermission {
private static Activity sContext;
private static final String TAG = "NBSDKPermission";
private static boolean isOpenTs = false;//
/**
*
* @param context
* @param isAsk
* @param permissions
*/
public static void getPermission(Context context,boolean isAsk,String... permissions){
sContext = (Activity)context;
if(!isAsk)return;
try {
if (XXPermissions.isHasPermission(context, permissions))
{
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}else {
XXPermissions.with((Activity)context).permission(permissions).request(new OnPermission() {
@Override
public void noPermission(List denied, boolean quick) {
if (quick) {
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}else {
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void hasPermission(List granted, boolean isAll) {
if (isAll) {
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}else {
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}
}
});
}
} catch (Exception e) {
NBUtils.log(TAG, " , , :"+e.toString());
if (isOpenTs) {
Toast.makeText(sContext, " , , :"+e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
/**
*
* @param context
* @param isAsk
* @param isOpenGudie , ,
* @param isOpenGudieForce
* @param title dialog title. :
* @param message dialog , : , ?
* @param okButMessage
* @param noButMessage
* @param permissions
*/
public static void getPermission(Context context,boolean isAsk,final boolean isOpenGudie,final boolean isOpenGudieForce,final String title,final String message,final String okButMessage,final String noButMessage,String... permissions){
sContext = (Activity)context;
if(!isAsk)return;
try {
if (XXPermissions.isHasPermission(context, permissions))
{
NBUtils.log(TAG, " ");
}else {
XXPermissions.with((Activity)context).permission(permissions).request(new OnPermission() {
@Override
public void noPermission(List denied, boolean quick) {
if (quick) {
NBUtils.log(TAG, " , ");
if (isOpenTs) {
Toast.makeText(sContext, " , ", Toast.LENGTH_SHORT).show();
}
//
if(isOpenGudie) {
final AlertDialog.Builder normalDialog =
new AlertDialog.Builder(sContext);
if(title != null && !title.equals(""))normalDialog.setTitle(title);
if(message != null && !message.equals(""))normalDialog.setMessage(message);
if(okButMessage != null){
normalDialog.setPositiveButton(okButMessage.equals("")?" ":okButMessage, new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
XXPermissions.gotoPermissionSettings(sContext);
}
});
}
if(noButMessage != null){
if (!isOpenGudieForce) {
normalDialog.setNegativeButton(noButMessage.equals("")?" ":noButMessage, new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
});
}
}
normalDialog.show();
}
}else {
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void hasPermission(List granted, boolean isAll) {
if (isAll) {
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}else {
NBUtils.log(TAG, " ");
if (isOpenTs) {
Toast.makeText(sContext, " ", Toast.LENGTH_SHORT).show();
}
}
}
});
}
} catch (Exception e) {
NBUtils.log(TAG, " , , :"+e.toString());
if (isOpenTs) {
Toast.makeText(sContext, " , , :"+e.toString(), Toast.LENGTH_SHORT).show();
}
}
}
}
次の操作を行います.
//1. ,
// ,
NBPermission.getPermission(Context context,boolean isAsk,String... permissions)
// , , :
NBPermission.getPermission(context,true,Permission.READ_PHONE_STATE,Permission.WRITE_EXTERNAL_STORAGE);
//2. , ,
NBPermission.getPermission(Context context,boolean isAsk,final boolean isOpenGudie,final boolean isOpenGudieForce,final String title,final String message,final String okButMessage,final String noButMessage,String... permissions)
基本機能:
//
if (XXPermissions.isHasPermission(this, Permission.Group.STORAGE)) {
}
//
XXPermissions.gotoPermissionSettings(this);
このように简単で、问题があってみんなに指摘することを望んで、意见があってみんなに指导することを望んで、ありがとうございます!転載、写しが必要な場合は、出典を明記してください.ありがとうございます.