试图推出并通过电话.没有.通过我的应用程序的这个代码来skype
PackageManager packageManager = getPackageManager(); Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider"); skype.setData(Uri.parse("tel:65465446")); startActivity(skype);
Skype已启动,但无法捕捉数字.
此代码适用于我在两个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>
您可以从{{Intent()}}中免费获取类别“android.intent.category.DEFAULT”,所以剩下的就是设置动作和URI.
tel: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>
所以你设置了动作,并给意图tel:URI和“正确的事情发生”.发生什么事情是,Android找到tel:URI的正确提供商.它可能会让用户的输入在Phone App和Skype之间进行选择. telnet优先处理tel:URI为零,这是最低的.所以如果安装了Phone App,它可能会得到Intent.