Этот код работает для меня, чтобы начать звонок между двумя пользователями Skype:
Intent sky = new Intent("android.intent.action.VIEW");
sky.setData(Uri.parse("skype:" + user_name));
startActivity(sky);
Чтобы найти это (и другие), используйте apktool, чтобы открыть Skype APK. Посмотрите на AndroidManifest.xml, и вы увидите все фильтры намерений, о которых они знают. Если вы хотите запустить один из этих фильтров намерений, вам нужно создать намерение, которое будет соответствовать одному. Вот фильтр намерений, который соответствует приведенному выше коду:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="skype" />
</intent-filter>
Вы получаете категорию "android.intent.category.DEFAULT" бесплатно от {{new Intent ()}}, так что остается только установить действие и URI.
Фильтр намерений для тел: URI выглядит следующим образом:
<intent-filter android:icon="@drawable/skype_blue" android:priority="0">
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
Итак, вы приступили к действию и даете Intent тел: URI и «происходит то, что нужно». Что происходит, так это то, что Android находит правильного поставщика для tel: URI. Это может заставить пользователя выбирать между приложением для телефона и Skype. Приоритет для Skype для обработки тел: URI нулевой, который является самым низким. Поэтому, если приложение Phone установлено, оно, вероятно, получит Intent.