android android.intent.action.call вылетает приложение для Android?
Я пытаюсь позвонить из моего приложения. Но каждый раз, когда происходит сбой без ошибок, отображается в logcat. Я взял разрешение в манифесте и проверить его во время выполнения.
public void call(String number){
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+number));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(callIntent);
}
2 ответа
Вы уверены, что контекст не нулевой? Вы должны сделать что-то вроде этого. Сделайте эти изменения в своей вызывающей деятельности
private static final int REQUEST_CALL_PHONE_PERMISSION = 100;
if( isCallPhonePermissionGranted() ){
call("<Number>");
} else {
call("<Number>");
}
private void requestCallPermission() { final String[] permissions = new String[]{Manifest.permission.CALL_PHONE}; ActivityCompat.requestPermissions(this, permissions, REQUEST_CALL_PHONE_PERMISSION); }
private boolean isCallPhonePermissionGranted() {
return ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)
== PackageManager.PERMISSION_GRANTED;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[]
permissions, @NonNull int[] grantResults) {
if (requestCode != REQUEST_CALL_PHONE_PERMISSION) {
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
return;
}
if (grantResults.length != 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
call("<Number>");
return;
}
}
public void call(String number){
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+number));
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(callIntent);
}
И, наконец, добавьте это разрешение в Android Manifest.xml.
<uses-permission android:name="android.permission.CALL_PHONE" />
Не забудьте добавить соответствующее разрешение в свой манифест:
<uses-permission android:name="android.permission.CALL_PHONE" />
Само намерение - это просто объект, который что-то описывает. Это ничего не делает.
public void call(String number){
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + number));
context.startActivity(intent);
}