ContentProvider
AndroidのデフォルトのSMSを自分のものに置き換える可能性を検討しています。
私は後に呼ばれるものについて話している:
context.getContentResolver().query(Uri.parse("content://sms/"),....);
私はあえて尋ねたいと思います:それは可能ですか?
ContentProvider
AndroidのデフォルトのSMSを自分のものに置き換える可能性を検討しています。
私は後に呼ばれるものについて話している:
context.getContentResolver().query(Uri.parse("content://sms/"),....);
私はあえて尋ねたいと思います:それは可能ですか?
いいえ、これは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);