欢迎光临散文网 会员登陆 & 注册

Android 的权限处理建议

2023-06-15 17:17 作者:翼618  | 我要投稿

下面分享一些问我在APP上开发时处理权限的一些代码,希望能帮到大家:


Android判断应用是否拥有某种权限

public static boolean hasExternalStoragePermission(Context context){  

    int perm = context.checkCallingOrSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE");  

    return perm == PackageManager.PERMISSION_GRANTED;  


------------------我是分割线----------------------------------------------------


权限判断 加 请求权限  6.0之后都要使用                动态请求权限


 RXJAVA2的写法 

导包

    compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'

    implementation 'io.reactivex.rxjava2:rxjava:2.0.7'

    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'




        RxPermissions rxPermissions=new RxPermissions(this);

        rxPermissions.request(

            anifest.permission.READ_EXTERNAL_STORAGE,

            Manifest.permission.CALL_PHONE,Manifest.permission.INTERNET)

        .subscribe(new Consumer<Boolean>() {

            @Override

            public void accept(Boolean aBoolean) throws Exception {

                if (aBoolean){

                    //申请的权限全部允许

                    Toast.makeText(B_Activity.this, "允许了权限!", Toast.LENGTH_SHORT).show();


                }else{

                    //只要有一个权限被拒绝,就会执行

                    Toast.makeText(B_Activity.this, "未授权权限,部分功能不能使用", Toast.LENGTH_SHORT).show();

                }

            }

        });


------------------我是分割线----------------------------------------------------


申请权限普通写法,不用导其他网络包


                    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

                    intent.setType("application/msword");   //打开文件类型   Word文档

                    intent.addCategory(Intent.CATEGORY_OPENABLE);

                    startActivityForResult(intent, 1);



------------------我是分割线----------------------------------------------------



7.0打开文件的兼容处理   例子如下 打开PPT文件  表格 视频貌似没这个问题撒……


首先在清单文件最底下加这玩意


        <!--7.0打开文件专用兼容权限  给一个私有文件权限-->

        <provider

            android:name="android.support.v4.content.FileProvider"

            android:authorities="com.jph.takephoto.fileprovider"

            android:grantUriPermissions="true"

            android:exported="false">

            <meta-data

                android:name="android.pport.FILE_PROVIDER_PATHS"

                android:resource="@xml/file_paths" />

        </provider>


        然后在创建一个xml文件夹 

        创建一个file_paths.xml 

        里面写上

        <?xml version="1.0" encoding="utf-8"?>

<resources>

    <paths>

         <external-path path="" name="camera_photos" />

      </paths>

</resources>


切记一五一十照着写吧 引用的 file_paths这个可以自定义 对的上就可以啊

用法 在这里 主要!

    /**

     * 打开文件

     *

     * @param file 兼容方面好像有问题

     *             解决

     */

    public static void openFile(File file, Context context) {

        Intent intent = new Intent();

        /**核心是这两句 下面的路径 替换成这个*/

        Uri imageUri = FileProvider.getUriForFile(context, "com.jph.takephoto.fileprovider", file);//通过FileProvider创建一个content类型的Uri

//        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件

        //设置intent的Action属性

        intent.setAction(Intent.ACTION_VIEW);

        //获取文件file的MIME类型

        String type = getMIMEType(file);

        //设置intent的data和Type属性。  这个适配有问题

//        intent.setDataAndType(/*uri*/Uri.fromFile(file), type); // 吧里面的url换掉

        intent.setDataAndType(imageUri, type);  //7.0后要用这样的写法了

        //跳转

        LogUtil.e("msg", "to test0---------------------");

        context.startActivity(intent);

        Preference.getInstance().putBoolean("start_train", true);

        LogUtil.e("msg", "to test1---------------------");


    }

------------------我是分割线----------------------------------------------------


  <!-- 新增加自动更新安装权限 8.0后 自动更新需要这个 -->

    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

------------------我是分割线----------------------------------------------------


现在很多操作都和权限挂钩,基本所有操作前都要判断取一下,否则无法继续,操作的时候

要留意了





Android 的权限处理建议的评论 (共 条)

分享到微博请遵守国家法律