Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android上接听呼出电话并将您包括在默认应用程序列表中_Android - Fatal编程技术网

如何在android上接听呼出电话并将您包括在默认应用程序列表中

如何在android上接听呼出电话并将您包括在默认应用程序列表中,android,Android,当用户开始拨打电话时,android建议用户选择可以使用哪个应用程序(如Skype)拨打电话。简单的问题-我的应用程序如何在列表中,我如何获得号码,哪个用户被放在系统拨号器中 我在两个答案中都提到了所有问题,但如果客户按电话拨号板上的call,我仍然看到: 致电: -skype -电话 列表中没有我的应用程序 已编辑 现在代码的问题解决了,现在我的应用程序也在列表中并打开了:(was错误>符号) 给出空值 第二版 上次我从谷歌收到通知,他们是限制呼叫特权(bcs我们不支持他们的紧急呼叫。)没有呼

当用户开始拨打电话时,android建议用户选择可以使用哪个应用程序(如Skype)拨打电话。简单的问题-我的应用程序如何在列表中,我如何获得号码,哪个用户被放在系统拨号器中

我在两个答案中都提到了所有问题,但如果客户按电话拨号板上的call,我仍然看到:

致电: -skype -电话

列表中没有我的应用程序

已编辑

现在代码的问题解决了,现在我的应用程序也在列表中并打开了:(was错误>符号)

给出空值

第二版


上次我从谷歌收到通知,他们是限制呼叫特权(bcs我们不支持他们的紧急呼叫。)没有呼叫特权,我的应用程序不再在列表中。有人知道那件事的新解决办法吗?我现在正在与谷歌支持部门讨论这个问题,我们有一些迭代目前还没有成功。

您需要做的是在您想要拨打电话的活动上设置一个意向过滤器。您可以在AndroidManifest.xml文件中执行此操作。修改活动定义以包含此意图筛选器:

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

将您的活动声明为将其添加到调用应用程序的选项列表中

<activity android:name="Makecall" >
        <intent-filter> 

            <action android:name="android.intent.action.CALL" />
           <data android:scheme="tel" />
           <category android:name="android.intent.category.DEFAULT" />
           <action android:name="android.intent.action.CALL_PRIVILEGED" />

        </intent-filter>
    </activity>

要回答问题的第二部分,即如何从intent对象提取电话号码,您可以拨打:

String schemeSpecificPart = intent.getData().getSchemeSpecificPart();
如果要将其解析为结构化对象,可以使用Google的libphonenumber库:

乙二醇

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
TelephonyManager manager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
Phonenumber.PhoneNumber number;
try {
     number = phoneUtil.parse(schemeSpecificPart, deviceCountry);
} catch (NumberParseException e) {
     // handle the exception
}

我想Op正在寻找如何获取哪个用户想要拨打的号码?@prosper:对不起,我不明白你在问什么。我的想法是OP正在尝试获取用户拨打的号码。@Sahil Mahajan Mj您能再显示一点代码吗,广播接收器必须如何注册e.t.c。谢谢您的示例,您能告诉我如何提取号码吗?u代码不起作用:(@user170317:如何提取号码表示?首先确认您的活动是否在选项列表中。如果是,则从选项菜单单击您的应用程序时,您的活动是否已启动?是的,应用程序已打开。我指的是电话号码,是哪个用户在拨号板中拨号。
<activity android:name="Makecall" >
        <intent-filter> 

            <action android:name="android.intent.action.CALL" />
           <data android:scheme="tel" />
           <category android:name="android.intent.category.DEFAULT" />
           <action android:name="android.intent.action.CALL_PRIVILEGED" />

        </intent-filter>
    </activity>
Uri numberuri = Uri.parse("tel:"  + edit_text_number);
Intent intent_call = new Intent(Intent.ACTION_DIAL, numberuri);
startActivity(intent_call);
String schemeSpecificPart = intent.getData().getSchemeSpecificPart();
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
TelephonyManager manager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
Phonenumber.PhoneNumber number;
try {
     number = phoneUtil.parse(schemeSpecificPart, deviceCountry);
} catch (NumberParseException e) {
     // handle the exception
}