是否有可能用我自己的ContentProvider Android的默认替换?

时间:2012-09-19 15:59:05

标签: android sms android-contentprovider android-contentresolver

我正在考虑用我自己的短信取代Android的默认短信ContentProvider

我在谈论那些被称为的人:

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

我敢问:这可能吗?

1 个答案:

答案 0 :(得分:0)

不,这是SMS消息传递应用程序 AND 内部使用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);