Как сделать программный вызов программным путем?

Я передаю на номер активности, чтобы позвонить по пачке

и затем, в такой деятельности, у меня есть кнопка для вызова на этот номер, это код:

callButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(bundle.getString("mobilePhone")));
            }
        }); 

Что-то не так, потому что когда я нажимаю кнопку, ничего не происходит...

Что я делаю неправильно?

PD: Я использую совместимый с Android 1.5 проект... возможно, телефонный звонок несовместим с 1.5?

Ответ 1

Ты забыл вызвать startActivity. Он должен выглядеть следующим образом:

Intent intent = new Intent(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:" + bundle.getString("mobilePhone")));
context.startActivity(intent);

Само по себе намерение - это просто объект, который описывает что-то. Он ничего не делает.

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

<uses-permission android:name="android.permission.CALL_PHONE" />

Ответ 2

Пробовал это на моем телефоне, и он отлично работает.

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:900..." ));
startActivity(intent);

Добавьте это разрешение в файл манифеста.

<uses-permission android:name="android.permission.CALL_PHONE" />

Ответ 3

 Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+198+","+1+","+1)); 
             startActivity(callIntent);

для нескольких упорядоченных вызовов

Это используется для вызывающих систем DTMF. Если вызов падает, тогда вы должны передавать больше "," между цифрами.

Ответ 4

В выбранном ответе нет проверки на разрешение зефира. Он не будет работать напрямую в устройстве с маршмеллоу 6.0 или выше.

Я знаю, что опоздал, но этот вопрос имеет большое голосование, поэтому я подумал, что это поможет другим в будущем.

В зефирных устройствах нам нужно получить разрешение во время выполнения для вызова...

Вот пример, чтобы сделать звонок в зефир или выше.

Как сделать звонок в андроиде зефир 6.0 или выше

Ответ 6

Здесь я покажу вам, как вы можете сделать телефонный звонок из своей деятельности. Чтобы позвонить, вам необходимо указать этот код в своем приложении.

try {
    Intent my_callIntent = new Intent(Intent.ACTION_CALL);
    my_callIntent.setData(Uri.parse("tel:"+phn_no));
    //here the word 'tel' is important for making a call...
    startActivity(my_callIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(getApplicationContext(), "Error in your phone call"+e.getMessage(), Toast.LENGTH_LONG).show();
}

Ответ 7

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
   final Button button = (Button) findViewById(R.id.btn_call);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String mobileNo = "123456789";
            String uri = "tel:" + mobileNo.trim();
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse(uri));
            startActivity(intent);
        }
    });*
 }

Ответ 8

Если кто-то ищет в Котлине

    val  uri = "tel:+800******"
    val call_customer_service = Intent(Intent.ACTION_CALL)
    call_customer_service.setData(Uri.parse(uri))
    startActivity(call_customer_service)

Как и некоторым другим решениям, требуется разрешение android.permission.CALL_PHONE.

Ответ 9

Это не требует разрешения.

val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:+123456"))
startActivity(intent)

Или

val intent = Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", "+123456", null))
startActivity(intent)

Но он показывает еще одно диалоговое окно (спрашивает, хотите ли вы позвонить по телефону один раз или всегда). Поэтому было бы лучше использовать ACTION_CALL с разрешением (см. Отмененное разрешение android.permission.CALL_PHONE).