0

我正在考虑ContentProvider用我自己的短信替换 Android 的默认短信的可能性。

我说的是那些被调用的:

context.getContentResolver().query(Uri.parse("content://sms/"),....);

我敢问:这可能吗?

4

1 回答 1

0

不,这是 SMS 消息应用程序Android 的电话层在内部使用的。

替换任何内置的内容提供程序保证会破坏 Android - 这是给定的!

但是您可以做的是创建您自己的内容提供程序并制作您的应用程序以使用您自己的。

如果您正在谈论监视短信内容提供者,您可以做的是使用 ContentObserver 来监视短信内容提供者并将对短信内容提供者所做的更改转发给您自己。

这是这种情况的一个示例,每次进行更改时,onChange都会触发它,它就在其中,中继到您自己的自定义内容提供商就足够了。

private class MySMSContentObserver extends ContentObserver{
    public MySMSContentObserver() {
        super();
    }

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

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        // This is where the change notifications gets received!
    }
}

// For example
MySMSContentObserver contentSMSObserver = new MySMSContentObserver();
//
context.getContentResolver().registerContentObserver (
        "content://sms", 
        true, 
        contentSMSObserver);

另外,不要忘记在应用程序完成时取消注册内容观察者,即:

context.getContentResolver().unregisterContentObserver(contentSMSObserver);
于 2012-09-19T16:01:40.497 回答