Uruchom Skype z aplikacji programowo & numer Przepustki-Android

/ Align = "left" / nie. do skype ' a za pomocą tego kodu z mojej aplikacji:

PackageManager packageManager = getPackageManager();
Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider");
skype.setData(Uri.parse("tel:65465446"));
startActivity(skype);

Skype jest uruchomiony, ale nie może złapać numeru.

Author: Blitz, 2011-06-20

6 answers

Ten kod działa dla mnie, aby rozpocząć połączenie między dwoma użytkownikami Skype:

Intent sky = new Intent("android.intent.action.VIEW");
sky.setData(Uri.parse("skype:" + user_name));
startActivity(sky);

Aby znaleźć to (i inne), użyj apktool, aby otworzyć plik APK Skype. # Patrz AndroidManifestxml i zobaczysz wszystkie filtry intencyjne, o których wiedzą. Jeśli chcesz uruchomić jeden z tych filtrów intencji, musisz utworzyć intencję, która będzie pasować do jednego. Oto filtr intencji, do którego pasuje powyższy kod:

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="skype" />
        </intent-filter>

Otrzymujesz kategorię " android.intencja.Kategoria.DEFAULT " za darmo z {{new Intent ()}}, więc pozostaje tylko ustawić akcję i URI.

Filtr intencyjny dla Uri tel: wygląda tak:

        <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>

Więc ustawić się do akcji i dać intencji tel: URI i "słuszna rzecz się dzieje". Zdarza się, że Android znajdzie odpowiedniego dostawcę tel: URI. Może to uzyskać wejście użytkownika do wyboru między aplikacją telefonu i Skype. Priorytet Skype do obsługi tel: URIs zero, który jest najniższy. Więc jeśli aplikacja na telefon jest zainstalowana, prawdopodobnie dostanie Intencja.

 36
Author: Jeff Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-13 00:52:00

W przypadku, gdy chcesz wywołać Połączenie wideo będziesz musiał dodać "?połącz & video = true "do Twojego Uri Skype' a.

Intent skypeVideo = new Intent("android.intent.action.VIEW");
skypeVideo.setData(Uri.parse("skype:" + "<username>" + "?call&video=true"));
startActivity(skypeVideo);

Więcej informacji na temat Uri Skype ' a można znaleźć na stronie: http://developer.skype.com/skype-uris-program/skype-uri-ref

EDIT:

Bezpośrednie połączenie przez Skype bez wyboru intencji:

Jeśli chcesz nawiązać bezpośrednie połączenie skype bez wyboru intencji, dodaj te linie do pliku manifestu...

               <intent-filter
                    android:icon="@drawable/skype"
                    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-filter>
                    <intent-filter
                        android:icon="@drawable/skype"
                        android:priority="0" >
                        <action android:name="android.intent.action.VIEW" />
                        <action android:name="android.intent.action.CALL" />

                        <category android:name="android.intent.category.BROWSABLE" />
                        <category android:name="android.intent.category.DEFAULT" />

                        <data android:scheme="skype" />
                    </intent-filter>


                </intent-filter>
 17
Author: Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-10 12:42:53

Użyj tego kodu dla Skype w wersji 2:

Intent skype_intent = new Intent("android.intent.action.VIEW");
skype_intent.setClassName("com.skype.raider", "com.skype.raider.Main");
skype_intent.setData(Uri.parse("skype:skypeusername"));
startActivity(skype_intent);
 4
Author: Chang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-26 16:36:50

Dzięki temu kodowi uzyskasz intencję aktywności Skype ' a, a nie aktywności rozmówcy. Musisz więc znaleźć intencję dla aktywności, która ma filtr intencji dla wywołania akcji. Ale wyraźniej Skype używa akcji android.intent.action.CALL_PRIVILEGED, więc znajdź przez ten filtr. Tylko dla informacji, że aktywność rozmówcy jest cmp=com.skype.raider.contactsync.ContactSkypeOutCallStartActivity.

 1
Author: Neeraj Nama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-20 06:29:50

Skype 2.X ma znacznie inny manifest niż Skype 1.X. nie ma tam ContactSkypeOutCallStartActivity. Nowy manifest zawiera kod:

<activity android:name="com.skype.raider.Main" android:launchMode="singleTask"  android:configChanges="keyboardHidden|orientation" android:windowSoftInputMode="adjustResize">
...
  <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>
...
</activity>

Więc powinieneś napisać:

Intent skype_intent = new Intent("android.intent.action.CALL_PRIVILEGED");
skype_intent.setClassName("com.skype.raider", "com.skype.raider.Main");
skype_intent.setData(Uri.parse("tel:65465446")); 
context.startActivity(skype_intent);

Należy pamiętać, że ta metoda nie pozwala na rozpoczęcie połączenia / czatu za pomocą Skype. Działa tylko z Skype Out.

 0
Author: dvpublic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-20 14:11:43

Stwierdziłem, że powyższy kod nie działa...

Intent i = packageManager.getLaunchIntentForPackage("com.skype.raider");
// i.setAction("android.intent.cation.CALL_PRIVILEGED");
// i.setClassName("com.skype.raider", "com.skype.raider.contactsync.ContactSkypeOutCallStartActivity");
// i.setData(Uri.parse("tel:5551234")); 
startActivity(i);

Komentowane linie albo przestały działać, albo nic nie zrobiły!

Przedstawiony kod wywoła Skype 'a i pojawi się na stronie, na której możesz wybrać kontakty Skype' a Więcej informacji będzie mile widziane John

 0
Author: user462990,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-21 00:27:07