0

我正在考慮用我自己的Android Android的默認短信ContentProvider取代它。是否有可能通過我自己的ContentProvider Android的默認值來替換?

我說的是那些被稱爲後:

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

敢跟我要問:這可能嗎?

+1

'不能安裝,因爲供應商名稱的短信已經由com.android.providers。電話'是會發生什麼事的。提供者權限(這裏是'sms')必須是唯一的(系統範圍的)。 – zapl

回答

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); 
相關問題