zoukankan      html  css  js  c++  java
  • Android APP 获得权限

    前言

    所有APP都需要向手机终端请求各种各样的权限,但是 Andorid Studio 项目默认不开启这些权限支持。

    本文记录 Andorid APP 以获得网络请求权限为例的静态/动态获取权限的方法。

    静态授权

    在 AndroidManifest.xml 文件中添加网络请求权限声明。

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

    即可为 APP 添加静态网络请求权限。

    动态授权

    通过编写 Java 代码实现,示例:

    //检查是否获得权限
    if (ContextCompat.checkSelfPermission(ImageViewShowActivity.this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
    	Toast.makeText(ImageViewShowActivity.this, "未授权!", Toast.LENGTH_SHORT).show();
    	//没有获得授权,申请授权
    	if (ActivityCompat.shouldShowRequestPermissionRationale(ImageViewShowActivity.this, Manifest.permission.INTERNET)) {
    		//弹窗解释为何需要该权限,再次请求权限
    		Toast.makeText(ImageViewShowActivity.this, "请授权!", Toast.LENGTH_SHORT).show();
    		//跳转到应用设置界面
    		Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    		Uri uri = Uri.fromParts("package", getPackageName(), null);
    		intent.setData(uri);
    		startActivity(intent);
    	} else {
    		//不需要解释为何需要授权直接请求授权
    		Toast.makeText(ImageViewShowActivity.this, "请联系开发人员授权!", Toast.LENGTH_SHORT).show();
    		ActivityCompat.requestPermissions(ImageViewShowActivity.this, new String[]{Manifest.permission.INTERNET}, 1);
    	}
    } else {
    	//获得授权
    	Toast.makeText(ImageViewShowActivity.this, "已授权!", Toast.LENGTH_SHORT).show();
    }
    

    测试

    以下仍以网络请求权限为例。

    未静态授权,仅动态授权


    仅静态授权,未动态授权

    静态授权,并动态授权

  • 相关阅读:
    MVC,MVP和MVVM的区别
    将数组里某个属性相同的对象合并成一个数组
    Ajax的理解
    VUE如何关闭Eslint的方法
    数组去重
    vue-router传递参数的几种方式
    密码的显示和隐藏
    "校园易借查询"选题报告
    我的第一个微信好友分析
    数据库实践
  • 原文地址:https://www.cnblogs.com/Yogile/p/13151647.html
Copyright © 2011-2022 走看看