Android 将ContentObserver与BlockedNumberContract一起使用
我有一个VOIP电话和短信应用程序。我需要能够监视对本机阻止号码列表的更改,以便在服务器上维护该列表 根据BlockedNumberContract上的文档,it表示要实现ContentObserver,以便在用户更改列表时进行监视 “我的应用程序”要求用户将其设置为默认的消息传递应用程序,以便涵盖文档中所述的部分 只有系统、默认SMS应用程序和默认电话应用程序(请参阅getDefaultDialerPackage())以及运营商应用程序(请参阅CarrierService)可以读取和写入blockednumber提供程序 我创建了一个服务并在清单中注册了它。服务已正确启动,并且我能够在onStartCommand()中查看日志 以下是CallBlockedListContentObserver的实现Android 将ContentObserver与BlockedNumberContract一起使用,android,android-contentprovider,contentobserver,callblocking,Android,Android Contentprovider,Contentobserver,Callblocking,我有一个VOIP电话和短信应用程序。我需要能够监视对本机阻止号码列表的更改,以便在服务器上维护该列表 根据BlockedNumberContract上的文档,it表示要实现ContentObserver,以便在用户更改列表时进行监视 “我的应用程序”要求用户将其设置为默认的消息传递应用程序,以便涵盖文档中所述的部分 只有系统、默认SMS应用程序和默认电话应用程序(请参阅getDefaultDialerPackage())以及运营商应用程序(请参阅CarrierService)可以读取和写入blo
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;
}
}