【已解决】 Android自动拨号功能报错,各路大佬帮忙看看
相关代码段如下:
```Java
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
initView();
initListener();
}
private void initListener() {
mCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Call to 10086...");
handlerCall();
}
});
}
/**
* <action android:name="android.intent.action.CALL" />
* <category android:name="android.intent.category.DEFAULT" />
* 打电话给10086
*/
private void handlerCall() {
Intent intent = new Intent();
intent.setAction("android.intent.action.CALL");
intent.addCategory("android.intent.category.DEFAULT");
Uri uri = Uri.parse("tel:10086");
intent.setData(uri);
startActivity(intent);
}
```
报错信息如下

已解决,Android6.0开始需要动态授权
```java mCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "Call to 10086..."); if (ContextCompat.checkSelfPermission(ThirdActivity.this,Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){ if (ActivityCompat.shouldShowRequestPermissionRationale(ThirdActivity.this, Manifest.permission.CALL_PHONE)) { Toast.makeText(ThirdActivity.this, "请授权!", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); } else { ActivityCompat.requestPermissions(ThirdActivity.this,new String[]{Manifest.permission.CALL_PHONE},MY_PERMISSIONS_REQUEST_CALL_PHONE); } } else { handlerCall(); } } }); ```已解决,Android6.0开始需要动态授权
```java mCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "Call to 10086..."); if (ContextCompat.checkSelfPermission(ThirdActivity.this,Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){ if (ActivityCompat.shouldShowRequestPermissionRationale(ThirdActivity.this, Manifest.permission.CALL_PHONE)) { Toast.makeText(ThirdActivity.this, "请授权!", Toast.LENGTH_LONG).show(); Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); } else { ActivityCompat.requestPermissions(ThirdActivity.this,new String[]{Manifest.permission.CALL_PHONE},MY_PERMISSIONS_REQUEST_CALL_PHONE); } } else { handlerCall(); } } }); ```