2013-04-05 5 views
7

Я пытаюсь использовать класс Intent.Action. Я знаю, как использовать ACTION_VIEW для отображения URL-адреса, но я хотел использовать Intent.ACTION_DIAL для вызова номера при запуске приложения. В документации сказано, что вам нужно разобрать URI в строку, а затем добавить его в Намерению Я попытался это:Android Intent.ACTION_CALL, Uri

Uri call = Uri.parse("7777777777");    
Intent surf = new Intent(Intent.ACTION_DIAL, call); 
startActivity(surf); 

Это не работает, я получаю сообщение об ошибке, говорящее:

К сожалению, проект имеет остановился. Я попытался отладить код и, похоже, указал мне на линию намерений, не уверенный, что я делаю неправильно, если я просто делаю это, это работает и вызывает дозвонщик.

//Uri call = Uri.parse("7777777777");    
Intent surf = new Intent(Intent.ACTION_DIAL); 
startActivity(surf); 
+0

возможный дубликат [Call умысел в Android] (http://stackoverflow.com/questions/10510395/call-intent-in- android) – amadib

ответ

22

tel

String number = "23454568678"; 
    Intent intent = new Intent(Intent.ACTION_CALL); 
    intent.setData(Uri.parse("tel:" +number)); 
    startActivity(intent); 

Использование Разрешение

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

попробовать это

String no = "536171839"; 
Intent callintent = new Intent(android.intent.action.CALL); 
callintent.setData(Uri.parse("tel:" +no)); 
startActivity(callintent); 

добавить это в файл AndroidManifest.xml

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

Чтобы открыть приложение для набора номера (пользователь должен нажать кнопку вызова внутри приложения дозвона; никаких дополнительных разрешений, необходимых) не использовать:

String number = "7777777777"; 
Uri call = Uri.parse("tel:" + number);    
Intent surf = new Intent(Intent.ACTION_DIAL, call); 
startActivity(surf); 

Чтобы открыть приложение дозвона и сделать вызов автоматически (необходимо android.permission.CALL_PHONE) использовать:

String number = "7777777777"; 
Uri call = Uri.parse("tel:" + number);    
Intent surf = new Intent(Intent.ACTION_CALL, call); 
startActivity(surf); 
3

попробовать этот

String url="tel:777777777" 
if (url.startsWith("tel:")) 
{ 
Intent intent = new Intent(Intent.ACTION_DIAL, 
Uri.parse(url)); 
startActivity(intent); 
} 

добавьте это в свой файл AndroidManifest.xml

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

Попробуйте также

Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phno); 
startActivity(intent); 

Android Manifest

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

Попробуйте это:

String toCall = "tel:" + number.getText().toString(); 

      startActivity(new Intent(Intent.ACTION_DIAL, 

        Uri.parse(toCall))); 
0

Если и добавили

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

Проверьте разрешение вызова по телефону за год ур приложения.

+1

Это должно быть комментарий – ketan

1

Другой подход заключается в том, чтобы сделать PendingIntent для последующего вызова. Это особенно удобно, если вы хотите перенаправить пользователя прямо на телефонный звонок из уведомления.

String number = "551191111113"; 
Intent intent = new Intent(Intent.ACTION_CALL); 
intent.setData(Uri.parse("tel:" +number)); 
PendingIntent pendingIntentForCall = PendingIntent.getActivity(mContext, 0 /* Request code */, intent,PendingIntent.FLAG_ONE_SHOT); 

Вы можете использовать его в уведомлении следующим образом:

 Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mContext) 
       .setContentTitle(title) 
       .setContentText(message) 
       .setStyle(new NotificationCompat.BigTextStyle().bigText(message)) 
       .setTicker(tickerText) 
       .setColor(Color.BLACK) 
       .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_directions_bus_white_48dp)) 
       .setSmallIcon(R.mipmap.ic_directions_bus_white_24dp) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .addAction(new NotificationCompat.Action(R.mipmap.ic_directions_bus_white_24dp,"Call to " + number,pendingIntentForCall)); 
Смежные вопросы