2013-10-25 4 views
4

Я хотел бы использовать намерение экспликации запуска определенного номера в приложении софтфона. неявное приложение будет выглядеть следующим образом:Как передать URI с явным намерением?

Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse(phone)); 
    startActivity(callIntent); 

Запуск явного приложения что-то выглядит следующим образом:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("example.app"); 
    startActivity(LaunchIntent); 

Вопрос: Можно ли пройти Uri и запустить приложение с ACTION_CALL помощью явного намерения ?

ответ

3

Да. Используя ваш пример, вы можете сделать это:

Intent intent = getPackageManager().getLaunchIntentForPackage("example.app"); 
intent.setAction(Intent.ACTION_CALL); 
intent.setData(Uri.parse(phone)); 
startActivity(LaunchIntent); 

При использовании явного Intent, Android не использует действия или поля данных в Intent, чтобы определить, какие Activity начать. Вы уже установили это явно в Intent. Но вы все равно можете установить поля ACTION и DATA в поле Intent, чтобы передать информацию в начало Activity.

+0

Спасибо за ваш четкий ответ. Странно то, что это отлично работает при использовании skype, но не с другими приложениями. Если я использую «com.skype.raider» как имя пакета и указываю «tel: 123456» как URI, это отлично работает. Но когда я использую другие приложения для софтфонов, это не так, хотя в документировании четко указывается URI («sip: [email protected]»). Любая идея, что может быть причиной? – user2188317

+0

Возможно, что другое приложение использует ACTION и DATA для запуска ** другого действия **, чем тот, который он использует для ** запуска приложения **. Чтобы узнать, вы можете попробовать запустить приложение с неявным Intent и посмотреть, какое действие запускается, или вы можете запросить PackageManager, чтобы выяснить, какие действия могут разрешить ACTION и DATA, которые вы используете. –

+0

Большое спасибо. Это было очень полезно! – user2188317

Смежные вопросы