通过应用程序以编程方式启动Skype,并通过密码-Android

发布于 2021-01-30 22:46:14

尝试启动并通过电话。没有。通过我的应用中的此代码进行Skype:

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

Skype已启动,但无法捕获该数字。

关注者
0
被浏览
290
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    此代码对我有用,可以在两个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>
    

    您可以从{{new 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>
    

    因此,您开始进行操作,并为Intent提供电话:URI和“正确的事情发生了”。发生的情况是Android为tel找到正确的提供程序:URI。可能会得到用户的输入,以在Phone App和Skype之间进行选择。Skype处理tel:URI的优先级为零,这是最低的。因此,如果安装了Phone App,则可能会获得Intent。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看