Seg*_*ult 9 android android-service
Android API级别24引入了一个名为CallScreeningService的新服务.该文档说,该服务可以通过默认拨号器实现来筛选来电.我想在我自己的应用程序中实现这项服务,最好不要创建一个完整的拨号器应用程序,但是当一个传入的呼叫发生时,操作系统似乎忽略了一个简单的天真实现.
AndroidManifest.xml片段:
<service android:name="com.example.callbouncer.CallService" android:permission="android.permission.BIND_SCREENING_SERVICE">
<intent-filter>
<action android:name="android.telecom.CallScreeningService"/>
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
CallService.java:
// imports...
public class CallService extends CallScreeningService {
@Override
public void onScreenCall(Call.Details callDetails) {
CallResponse.Builder response = new CallResponse.Builder();
Log.e("CallBouncer", "Call screening service triggered");
respondToCall(callDetails, response.build() );
}
}
Run Code Online (Sandbox Code Playgroud)
在构建或安装此程序时没有错误,但筛选似乎没有发生.我做错了什么(比如服务中的清单或缺少的实现/覆盖)还是不可能?如果在这样的小应用程序中无法实现,那么我是否可以实现整个拨号应用并将其设置为默认拨号器?最后,如果是这样的话,是否有什么东西阻止我将拨号器从AOSP中分离出来并添加我的功能呢?
从 Android 10 (API 29+) 开始,您CallScreeningService 无需实现整个拨号器应用程序即可拥有。在 Android 10 之前,只会调用默认拨号应用程序的CallScreeningService调用。
https://developer.android.com/about/versions/10/features#call-screening
不过不要太兴奋,因为它有很多问题,并且不像文档所说的那样工作:
我为已知联系人打电话的解决方法是要求用户访问联系人并检查来电者是否在用户的联系人中。目前没有其他问题的解决方法。
我制作了一个非常基本的筛选应用程序,它拒绝来自不在用户联系人中的号码的所有呼叫,如果您愿意,可以使用一个示例:https : //github.com/joshfriend/gofccyourself
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |