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();
    }
    

    测试

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

    未静态授权,仅动态授权


    仅静态授权,未动态授权

    静态授权,并动态授权

  • 相关阅读:
    广度优先搜索-八数码问题
    广度优先搜索-鸣人和佐助
    广度优先搜索-迷宫问题
    广度优先搜索-抓住那头牛
    Unity面试题汇总(第一部分)
    独立项目-Socket通讯 应用/客户端和服务器的简单通讯-04
    独立项目-Socket通讯 服务器端代码-04
    独立项目-Socket通讯 客户端代码-03
    独立项目-Socket通讯 发送数据包和接收数据包过程图-02
    独立项目-Socket通讯 服务器端架构图-01
  • 原文地址:https://www.cnblogs.com/Yogile/p/13151647.html
Copyright © 2011-2022 走看看