gpt4 book ai didi

android - ACTION_CALL 在 Nexus/Android 4.3 上作为 ACTION_DIAL 用于以 08 开头的数字

转载 作者:行者123 更新时间:2023-11-29 21:31:48 25 4
gpt4 key购买 nike

我有一个布局中只有一个编辑文本和按钮的应用程序

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:inputType="phone" >

<requestFocus />
</EditText>

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText1"
android:text="Dial" />

</RelativeLayout>

和一个 MainActivity 扩展 Activity 并做

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final EditText editText1 = (EditText) findViewById(R.id.editText1);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
String strNumber = editText1.getText().toString();
if (!strNumber.equals(""))
{
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + strNumber));
startActivity(intent);
}
}
});
}

对于不以“08...”开头的号码,它会按预期调用该号码。对于以“08...”开头的号码,它会调出拨号器并改为填写号码。我怎样才能阻止这个?它似乎不是手机上的设置,至少据我所知不是,但我在 4.3 模拟器上测试了它并且它按预期工作。我没有另一部 4.3 手机来测试它。我的 4.2.2 HTC One 按预期拨号,我所有的旧测试设备也是如此。

我可以直接调用 0800 号码,或者在应用程序启动拨号器后按下通话按钮,这样它们就不会被完全阻止,而且我在手机中没有 sim 卡的情况下也能得到同样的效果,所以这不是


预计到达时间:我可以通过在 08 号码前加上“,”来解决这个问题,这会在拨号前造成轻微的停顿,但除此之外还能正常工作。不过,这并不能真正解释为什么会这样。

最佳答案

我没有4.3手机做测试。但是,我看了一下 OutgoingCallBroadcaster 的源代码,其作用描述如下:

OutgoingCallBroadcaster receives CALL and CALL_PRIVILEGED Intents, and broadcasts the ACTION_NEW_OUTGOING_CALL intent which allows other applications to monitor, redirect, or prevent the outgoing call.

它的processIntent(Intent i) 方法包含一个 fragment (大约在第 493 行),如果数字被视为“潜在紧急情况”,则将 intent 的操作更改为 ACTION_DIAL。

总而言之,Android 有一个使用拨号盘拦截 ACTION_CALL 的策略。不过,不太清楚为什么会发生这种情况。

关于android - ACTION_CALL 在 Nexus/Android 4.3 上作为 ACTION_DIAL 用于以 08 开头的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19244929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com