1.主代码
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
package com.animee.day20;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class CallActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call);
}
public void onClick(View view) {
// 1.判断当前的手机系统的版本号,如果是6。0以上系统,需要申请权限,否则就不需要申请权限。
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) {
// 2.判断之前使用中,是否申请过这个权限,如果申请通过了,也不用继续申请了,可以直接调用
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED) {
// 3.申请授权
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE,Manifest.permission.READ_CALL_LOG},100);
}else{
call();
}
}else{
call();
}
}
/**
* 4.判断用户是否授权的回调方法
*requestCode :请求码
* permissions :需要申请的权限的数组
* grantResults :用户给与的结果,授权或者没有授权
* */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 100:
int result = grantResults[0];
if (result == PackageManager.PERMISSION_GRANTED) {
// 用户给与了授权
call();
}else{
Toast.makeText(this,"您没有给与这个权限,无法进行此项操作,请在应用管理器当中开启!",Toast.LENGTH_SHORT).show();
}
// 判断申请的第二个权限
int grant = grantResults[1];
if (grant== PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this,"用户给与了读取手机通讯列表的权利!!",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"用户没有给与了读取手机通讯列表的权利!!",Toast.LENGTH_SHORT).show();
}
break;
}
}
// 直接跳转到打电话页面,然后拨打电话
// 1.添加权限
// 2.获取意图对象,向意图对象当中添加数据
// 3.跳转界面
public void call(){
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10010"));
startActivity(intent);
}
}
// 读取sdcard的权限申请, 在6.0以上手机上申请。读取sd卡的图片放到imageview上。