android 6.0 获取权限管理,Android Studio  6.0运行时权限获取(拨号器为例)黄柳淞原创转载不用注明出处...

本文介绍了Android 6.0开始引入的运行时权限管理系统,用户在应用运行时授予或撤销权限,简化安装流程并增强用户对应用功能的控制。示例代码展示了如何检查和请求拨打电话的权限,只有在获得用户明确批准后才能执行相应操作。
摘要由CSDN通过智能技术生成

This lesson teaches you to

Dependencies and Prerequisites

Android 6.0 (API level 23)

You should also read

Beginning in Android 6.0 (API level 23), users grant permissions to

apps while the app is running, not when they install the app. This

approach streamlines the app install process, since the user does

not need to grant permissions when they install or update the app.

It also gives the user more control over the app's functionality;

for example, a user could choose to give a camera app access to the

camera but not to the device location. The user can revoke the

permissions at any time, by going to the app's Settings screen.

翻译下:

在运行时请求权限

这节课教你

依赖和先决条件

Android 6.0(API级别23)

你也应该读

从Android 6.0(API级别23)开始,用户授权 权限的应用程序在应用程序运行时,而不是当他们安装应用程序。

这种方法简化了应用程序 安装过程,因为用户不需要时给予权限 安装或更新应用程序。这也给了用户更多的控制程序

功能;例如,一个用户可以选择相机应用程序访问 相机而不是设备的位置。 用户可以撤销

权限在任何时候,通过将应用程序的设置屏幕。

系统权限分为两类,正常的和危险:

正常的权限不直接用户的隐私风险。

如果你的应用 列出了一个正常的许可在其清单,系统授予许可 自动。

危险的权限可以给应用程序访问用户的机密 数据。 如果你的应用程序清单列出了一个正常的权限,系统 自动授予许可。

如果你列出一个危险的许可, 用户必须显式地给应用程序审批。

所以就电话拨号器来说不仅仅是在清单文件中声明打电话权限,还要在用到打电话的地方告诉用户我需要你的打电话权限并且提供友好界面给用户选择:

如图:

a4c26d1e5885305701be709a3d33442f.png

关键代码如下:

packagecom.example.administrator.callphone;importandroid.content.Intent;importandroid.content.pm.PackageManager;importandroid.net.Uri;importandroid.os.Build;importandroid.os.Bundle;importandroid.support.v4.app.ActivityCompat;importandroid.support.v4.content.ContextCompat;importandroid.support.v7.app.AppCompatActivity;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;public classMainActivity extendsAppCompatActivity {

privateEditText et;privateButton button;//@TargetApi(Build.VERSION_CODES.M)protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.main);button= (Button) this.findViewById(R.id.button);et= (EditText) this.findViewById(R.id.et);//第二种设置监听事件的方法// button.setOnClickListener(new ButtonClickListener());button.setOnClickListener(newView.OnClickListener() {

public voidonClick(View v) {

if(Build.VERSION.SDK_INT>= 23) {

//检查程序是否具备了拨打电话的授权inti = ContextCompat.checkSelfPermission(MainActivity.this,android.Manifest.permission.CALL_PHONE);//返回值为int类型//PackageManager为程序的管理者if(i == PackageManager.PERMISSION_DENIED)//如果发现没有授权则申请授权1表示请求码{

ActivityCompat.requestPermissions(MainActivity.this, newString[]{android.Manifest.permission.CALL_PHONE},1);return;//没有返回值}

//如果还没有授权则申请权限} else{

String phoneNum = et.getText().toString();Intent intent1 = newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+ phoneNum));startActivity(intent1);}

}

});}

//权限的回调方法 用户在对话框选择权限以后就返回到这个方法requestCode表示第一个则是返回请求码public voidonRequestPermissionsResult(intrequestCode,String[] permissions, int[] grantResults) {

super.onRequestPermissionsResult(requestCode,permissions,grantResults);if(requestCode == 1) {

if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {

String phoneNum = et.getText().toString();Intent intent = newIntent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel"+ phoneNum));}

}

}

}

运行结果:

a4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值