如何在Android手机中制作自己的定制拨号器

9
在我的应用程序中,我添加了一个意图,以便用户可以调用:
str="tel:"+phoneArray[11];  
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(str));
startActivity(intent);

那么现在使用的是安卓手机拨号器,但我想设置一个外观不同的自定义拨号器。我需要做什么?我的意思并不是如何设计拨号器,而仅仅是如何制作一个可以输入号码并执行呼叫的用户界面。


在这里,您可以找到一个自定义拨号器:https://github.com/Ali-Rezaei/PadLayout - Ali
3个回答

12

创建一个响应Intent.ACTION_DIAL的应用程序。在AndroidManifest.xml中,您需要将以下内容添加到该Activity:

<intent-filter>
    <action android:name="android.intent.action.DIAL" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

你可以参考官方手机应用,但请注意,这不是一项简单的任务。

通过这种方式,你只能替换拨号器。实际的通话界面(在通话期间所看到的内容)无法更改。

欲了解更多信息,请参阅 Stack Overflow 问题 Android拨号器应用


这种情况怎么样:我有一个带认证的Web服务,可以通过VoIP平台在两个号码之间发起电话呼叫。它接受的两个参数是呼叫者和被呼叫者号码。如果我有一个活动响应DIAL意图的应用程序,是否就足够了?我假设Android会在我在电话簿上点击号码后提供设置我要使用哪个应用程序拨号的选项...那么,我该如何从电话簿将这个号码传递给我的活动呢? - azec-pdx

3

如果您希望完全替换现有的电话拨号器,并从应用内管理通话,则答案是,除非您在更改Android源代码后构建自定义ROM并将默认拨号器替换为自己的拨号器,否则无法完成此操作。


2
自API 23以来,这是可能的,请参见https://dev59.com/HaDha4cB1Zd3GeqP9RC4#49835987和https://dev59.com/z1gR5IYBdhLWcg3wEp4v#49856583。 - arekolek
@arekolek 如果simple-phone能够被翻译成通常的Java就太好了。我尝试过从菜单>工具>Kotlin->反编译Kotlin到Java,但是我没有成功,因为我不够了解它。当代码被反编译时,会有一些在通常的Java中不支持的额外代码。 - Aliton Oliveira
1
@AlitonOliveira 有一些Java分支,例如https://github.com/Abror96/CustomPhoneDialer - arekolek
关于 compileClasspath 的编译错误:无法解析 org.jetbrains.kotlin:kotlin-stdlib:1.2.31。缺少以下命令:implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21" - Aliton Oliveira

2

当实际电话出现时,您可以在其上放置覆盖层。有许多类似于这样的手机皮肤应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接