android权限申请Permission 妖狐艹你老母 2022-05-28 14:07 259阅读 0赞 > 代码地址如下: > [http://www.demodashi.com/demo/12432.html][http_www.demodashi.com_demo_12432.html] 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.项目结构图和效果图 #### 项目结构图如下: ![isEOsFjfuDix3d4o3Fj.png][] 运行效果图如下: ![f9N5nLW2RH1nh5JUDnT.gif][] android权限申请Permission > 代码地址如下: > [http://www.demodashi.com/demo/12432.html][http_www.demodashi.com_demo_12432.html] > > 注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权 [http_www.demodashi.com_demo_12432.html]: http://www.demodashi.com/demo/12432.html [isEOsFjfuDix3d4o3Fj.png]: /images/20220528/9e1f763b293e48a19b4c86fd2a256bea.png [f9N5nLW2RH1nh5JUDnT.gif]: /images/20220528/c9f8986c03204dcd9a020cd68f391470.png
还没有评论,来说两句吧...