2014-02-10 4 views
2

Я хочу создать приложение, которое я создаю, открыть дозвонщик и отправить вызов, используя последовательность символов из переменной «seq».Попытка сделать приложение для Android аннулировать номер

Я получаю ошибки, когда пытаюсь. Это мой код.

public void sendCall(View v){ 
    EditText phoneNumberText=(EditText)findViewById(R.id.phoneNumberText); 
    EditText topUpValueText=(EditText)findViewById(R.id.topUpValueText); 
    EditText passCodeText=(EditText)findViewById(R.id.passCodeText); 
    Integer phoneNumber=Integer.parseInt(phoneNumberText.getText().toString()),topUpValue=Integer.parseInt(topUpValueText.getText().toString()),passCode=Integer.parseInt(passCodeText.getText().toString()); 
    String seq="*195*4000*" + passCode.toString() + "*868" + phoneNumber.toString() + "*" + topUpValue.toString() + "#"; 
    Uri number = Uri.parse(seq); 
    Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 

ответ

2

Вы можете набирать номера в этом формате: "тел: 123456789"

Если вы хотите поместить вызов (ACTION_CALL вместо ACTION_DIAL), вы должны требовать это разрешение:

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

В файле манифеста.

+0

Спасибо за ответ. Набираемый номер - это последовательность символов, полученных из переменной «seq». Примером такой последовательности может быть * 195 * 4000 * 8685553333 * 20 #, как бы я послал это на «tel: * 195 * 4000 * 8685553333 * 20 #"? – Yansee

+0

Сначала добавьте «tel:» в seq: ** seq = "tel:" + seq; **. Затем я удалю все ШАРЫ ГАРБЕЖЕЙ (\ *, #). Все, что не является ЧИСЛЕННЫМ. ** seq = seq.replace ("\ *", ""); ** и ** seq = seq.replace ("#", ""); ** –

+0

Последовательность является USSD-кодом и нуждается в (* , #) для правильной работы. Если он отправляет вызов, как это, «tel: 1954000868555333320», он не будет работать. Я добавлю добавить «tel:» в seq, хотя. – Yansee

1

Так что у меня есть следующий служебный метод here.

public static void callContact(Context context, String contactNo) { 
    try { 
     String uri = "tel:" + contactNo; 
     Intent intent = new Intent(Intent.ACTION_CALL); 
     intent.setData(Uri.parse(uri)); 
     context.startActivity(intent); 
    } catch (Exception e) { 
     // Report no exception 
    } 
} 

Не забудьте добавить это как разрешение в проявленном
<uses-permission android:name="android.permission.CALL_PHONE" />

+0

Да, я добавил разрешение на файл манифеста. Должен ли я добавить это в новый блок? или я могу вложить это в общественную пустоту? – Yansee

+0

Я поделился утилитой здесь. – midhunhk

2

использованием Intent.ACTION_DIAL: Наберите номер, как указано в данных. Это показывает пользовательский интерфейс с набираемым номером, позволяя пользователю явно инициировать вызов.

public static void callContact(Context context, String contactNumber) { 
     try { 
    String uri = "tel:" + contactNumber; 
    Intent DialIntent = new Intent(Intent.ACTION_DIAL,Uri.parse(uri)); 
      DialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(DialIntent); 
    } catch (Exception e) { 
      Log.e("Exception", e.getMessage()); 
     } 
    } 

Использование Intent.ACTION_CALL: Активность Действие: Выполните вызов кому-либо указанному в данных.

public static void callContact(Context context, String contactNumber) { 
    try { 
     String uri = "tel:" + contactNumber; 
     Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(uri)); 
     context.startActivity(intent); 
    } catch (Exception e) { 
     Log.e("Exception", e.getMessage()); 
    } 
} 

Добавить это разрешение вашего AndroidManifest.xml

<uses-permission android:name="android.permission.CALL_PHONE" /> 
Смежные вопросы