android android.intent.action.call вылетает приложение для Android? - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь позвонить из моего приложения.Но каждый раз, когда это терпит крах, без ошибки, показанной на 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 ]

0 голосов
/ 20 ноября 2018

Вы уверены, что контекст не нулевой?Вы должны сделать что-то вроде этого.В своей вызывающей деятельности внесите эти изменения

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" />
0 голосов
/ 20 ноября 2018

Не забудьте добавить соответствующее разрешение в манифест:

<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);
   }

И Как совершать звонки в Android 6.0 и выше

...