0

ContentProviderAndroidのデフォルトのSMSを自分のものに置き換える可能性を検討しています。

私は後に呼ばれるものについて話している:

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

私はあえて尋ねたいと思います:それは可能ですか?

4

1 に答える 1

0

いいえ、これはSMSメッセージングアプリケーションとAndroidのテレフォニーレイヤーによって内部的に使用されます

組み込みのコンテンツプロバイダーを置き換えると、Androidが壊れることが保証されます-それは当然のことです!

ただし、できることは、独自のコンテンツプロバイダーを作成し、代わりに独自のコンテンツプロバイダーを使用するようにアプリケーションを作成することです。

SMSコンテンツプロバイダーの監視について話している場合は、ContentObserverを使用してSMSコンテンツプロバイダーを監視し、SMSコンテンツプロバイダーに加えられた変更を自分のプロバイダーに転送することができます。

このようなシナリオの例を次に示します。変更が行われるたびに、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 に答える