Android APP 获得权限

Posted Yogile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
}

测试

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

未静态授权,仅动态授权


仅静态授权,未动态授权

静态授权,并动态授权

以上是关于Android APP 获得权限的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

Android 更新系统应用未获得新权限

如何管理android手机中app的权限

片段还是支持片段?

Android App 在片段中创建 ListView 引用时关闭

android怎么在代码里获得系统文件的读写权限