Android 将ContentObserver与BlockedNumberContract一起使用

Android 将ContentObserver与BlockedNumberContract一起使用,android,android-contentprovider,contentobserver,callblocking,Android,Android Contentprovider,Contentobserver,Callblocking,我有一个VOIP电话和短信应用程序。我需要能够监视对本机阻止号码列表的更改,以便在服务器上维护该列表 根据BlockedNumberContract上的文档,it表示要实现ContentObserver,以便在用户更改列表时进行监视 “我的应用程序”要求用户将其设置为默认的消息传递应用程序,以便涵盖文档中所述的部分 只有系统、默认SMS应用程序和默认电话应用程序(请参阅getDefaultDialerPackage())以及运营商应用程序(请参阅CarrierService)可以读取和写入blo

我有一个VOIP电话和短信应用程序。我需要能够监视对本机阻止号码列表的更改,以便在服务器上维护该列表

根据BlockedNumberContract上的文档,it表示要实现ContentObserver,以便在用户更改列表时进行监视

“我的应用程序”要求用户将其设置为默认的消息传递应用程序,以便涵盖文档中所述的部分

只有系统、默认SMS应用程序和默认电话应用程序(请参阅getDefaultDialerPackage())以及运营商应用程序(请参阅CarrierService)可以读取和写入blockednumber提供程序

我创建了一个服务并在清单中注册了它。服务已正确启动,并且我能够在onStartCommand()中查看日志

以下是CallBlockedListContentObserver的实现

public class CallBlockedListContentObserver extends ContentObserver
{
    public CallBlockedListContentObserver(Handler handler)
    {
        super(handler);
    }

    @Override
    public void onChange(boolean selfChange) {
        this.onChange(selfChange, null);
        Log.i("CallBlockedListContentObserver", "first method");
    }

    @Override
    public void onChange(boolean selfChange, Uri uri) {
        Log.i("CallBlockedListContentObserver", "2nd method uri= "+uri);
    }

    @Override
    public boolean deliverSelfNotifications() {
        return true;
    }
}

我的问题是,当我阻止通讯录中的联系人时,2个onChange()方法中的日志永远不会打印出来,这让我认为ContentObserver没有跟踪更改。我目前正在安卓7设备上进行测试,因此BlockedNumberContract作为一种新API没有任何问题。谁能告诉我我做错了什么?为什么我阻止联系人时我的应用程序没有收到通知?谢谢

你最终明白了吗?不幸的是没有。我实现了一个应用内解决方案,没有与BlockedNumberContract接口。谢谢。我很感兴趣-你能不能更深入地解释一下你是如何做到的?我创建了一个SQLite表来跟踪用户想要阻止的联系人。我还将这些被阻止的联系人上载到我们的服务器,服务器根据用户是否阻止了该联系人来决定是否将来电转接到手机。@Marline如果可能,您可以共享将应用设置为默认手机应用的代码吗?谢谢你最后明白了吗?不幸的是没有。我实现了一个应用内解决方案,没有与BlockedNumberContract接口。谢谢。我很感兴趣-你能不能更深入地解释一下你是如何做到的?我创建了一个SQLite表来跟踪用户想要阻止的联系人。我还将这些被阻止的联系人上载到我们的服务器,服务器根据用户是否阻止了该联系人来决定是否将来电转接到手机。@Marline如果可能,您可以共享将应用设置为默认手机应用的代码吗?谢谢
public class CallBlockedListContentObserver extends ContentObserver
{
    public CallBlockedListContentObserver(Handler handler)
    {
        super(handler);
    }

    @Override
    public void onChange(boolean selfChange) {
        this.onChange(selfChange, null);
        Log.i("CallBlockedListContentObserver", "first method");
    }

    @Override
    public void onChange(boolean selfChange, Uri uri) {
        Log.i("CallBlockedListContentObserver", "2nd method uri= "+uri);
    }

    @Override
    public boolean deliverSelfNotifications() {
        return true;
    }
}