我正在找出一种方法来替换我的自定义拨号器应用程序中的默认拨号器应用程序,但我没有得到如何实现这一点.
这就是我想要的
我正在尝试开发一个非常简单的通话应用程序来替换库存版本.基本上,我只想回答来电并向用户展示一个非常简单的自定义UI.不需要拨出电话或任何花哨的东西.
在网上搜索我找到了包android.telecom.incallservice(在API 23中提供).此服务由希望提供用于管理电话呼叫的用户界面的任何应用程序实现.
这似乎很有希望,但我无法让它工作.我已经创建了扩展InCallService的简单服务,并在文档描述的清单中声明它.但是,我希望能够将设置中的默认手机应用程序更改为我自己的,但我只能找到手机应用程序.
这是文档的清单声明.我已经替换了BIND_IN_CALL_SERVICE,BIND_INCALL_SERVICE因为我猜这是一个错字.
<service android:name="your.package.YourInCallServiceImplementation" android:permission="android.permission.BIND_INCALL_SERVICE">
<meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService"/>
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
是否有可能第三方应用程序替换调用应用程序中的默认值?
是否有任何使用此API的示例实现我可以用作参考?我找到了谷歌实现,但这是一个系统应用程序,它利用了一些其他应用程序无法使用的权限(例如:)android.permission.MODIFY_PHONE_STATE.
我是否正确假设在提供正确的InCallService清单注册和存根实现后,我可以期待找到我的应用程序Default Apps -> Phone?我需要申报其他东西吗?
谢谢.
在我的应用程序中,我添加了一个intent,以便用户可以调用:
str="tel:"+phoneArray[11];
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(str));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
然后它从Android手机调用,但我想设置另一个具有不同外观的自定义拨号器.需要做什么?我不是指如何设计拨号器,而只是如何设置一个将输入数字并执行呼叫的UI.
我在其他地方读过"由于安全问题,开发人员无法自定义通话屏幕"
所以,我试图理解源级别的通话屏幕的功能.
任何Android开发人员,特别是那些已经创建了自己的自定义ROM的开发人员,可以告诉我AOSP中哪些特定类负责此屏幕的显示和功能?
添加InCallService了Android API级别23,以提供用于管理电话的用户界面。该文档提供了清单注册示例,但我无法使它正常工作。该应用可以正常编译,但设置中的默认应用不会显示我的应用。
我发现有关该主题的任何信息的唯一地方是一年前关闭的StackOverflow问题。对提出增加android.intent.action.DIAL活动的那个问题发表评论,但这也无济于事。我在活动中也尝试了其他其他意图的组合(android.intent.action.CALL_DIAL和android.intent.action.ANSWER)。
是否有替换手机应用程序所需的代码示例?这些类是否需要提供一些工作方法供应用程序显示?
android android-intent android-6.0-marshmallow android-7.0-nougat android-7.1-nougat