簡體   English   中英

第三方應用可以在 android 7 中實現 CallScreeningService 嗎?

[英]Can a third-party app implement CallScreeningService in android 7?

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>

調用Service.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() );
    }
}

構建或安裝此程序時沒有錯誤,但似乎沒有進行篩選。 我做錯了什么(比如服務中的清單或缺失的實現/覆蓋)還是不可能? 如果在這樣的小應用程序中不可能,如果我實現整個撥號應用程序並將其設置為默認撥號程序,是否可能? 最后,如果是這樣的話,有什么可以阻止我將撥號器從 AOSP 中分叉出來並將我的功能添加到其中嗎?

從 Android 10 (API 29+) 開始,您可以擁有CallScreeningService而無需同時實現整個撥號器應用程序。 在 Android 10 之前,只會調用默認撥號應用程序的CallScreeningService

https://developer.android.com/about/versions/10/features#call-screening

不過不要太興奮,因為它有很多問題,並且不像文檔所說的那樣工作:

我為已知聯系人打電話的解決方法是要求用戶訪問聯系人並檢查來電者是否在用戶的聯系人中。 目前沒有其他問題的解決方法。

我制作了一個非常基本的篩選應用程序,它拒絕來自不在用戶聯系人中的號碼的所有呼叫,如果您願意,可以舉個例子: https : //github.com/joshfriend/gofccyourself

查看您鏈接到的文檔:

此服務可以由默認撥號程序(請參閱 getDefaultDialerPackage())實現,以在來電顯示給用戶之前允許或禁止來電。

不要認為您可以在單獨的應用程序中執行此操作(至少在當前界面中:我希望在不太遠的功能中它會公開)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM