2013-11-21 2 views
1

При выполнении этогоОтправка USSD код программным дозванивается Skype вместо обычного телефонного звонка

String ussdCode = "*" + "100" + Uri.encode("#"); 
startActivity(new Intent("android.intent.action.CALL", Uri.parse("tel:" + ussdCode))); 

Я ожидаю, что обычный телефонный звонок сделать, но вместо того, чтобы Skype идти на фронт и сделать вызов на * 100 # USSD-код. Я вышел из Skype, и он подошел к Skype!
Как заставить его использовать обычный телефонный звонок вместо Skype?

+0

Привет, Салех, я работаю над интеграцией USSD с моим приложением. Знаете ли вы, можно ли отправить данные программно с ним? Например, как идентификатор пользователя. благодаря – lisovaccaro

ответ

3

Это потому, что у вас есть Skype, как приложение по умолчанию для звонков. Это конфигурация устройства. Вы можете изменить его, но обратите внимание, что если вы это сделаете, это приведет к фактическому изменению этого подтверждения, поэтому skype больше не будет использоваться по умолчанию на вашем мобильном устройстве.

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

getPackageManager().clearPackagePreferredActivities(PACKAGENAME); 

имя пакета Скайпа com.skype.raider, так что в вашем случае вы вызываете этот

getPackageManager().clearPackagePreferredActivities("com.skype.raider"); 

конечно вы вызываете его до того, как вы позвоните startActivity

ОБНОВЛЕНИЕ

Я помню, что если вы не хотите сбросить конфигурацию по умолчанию, вы можете попытаться заставить одно приложение обрабатывать намерение, которое вы отправляете, в startActivity. Но у вас есть проблема, вам нужно будет узнать имя пакета приложения и активность, которая должна его обработать. В некоторых случаях это будет легко узнать, но в некоторых других это не будет. Я искал эту информацию для дозвона по умолчанию для Android, а также посмотрел на свое устройство, но ничего не нашел. В любом случае, если вы можете найти его, вы можете использовать код ниже, и он будет намного лучше, так как он не изменит никаких настроек. Также вы можете запомнить это, так как это может быть удобно в других ситуациях:

Intent intent = new Intent(); 
intent.setComponent(new ComponentName("PACKAGE_NAME","PACKAGENAME.ACTIVITY_NAME")); 
intent.setAction("android.intent.action.VIEW"); 
intent.addCategory("android.intent.category.BROWSABLE"); 
Uri uri = Uri.parse(url); 
intent.setData(uri); 
try 
{ 
    startActivity(intent); 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 
Смежные вопросы