2009-08-17 3 views
3

SMSデータベースの変更を登録するにはどうすればよいですか?SMSデータベースの変更を登録するには?

私が試した:

private class MyDataSetObserver extends DataSetObserver { 
     public void onChanged() { 
      System.out.println ("1"); 
     } 
     public void onInvalidated() { 
      System.out.println ("2"); 
     } 
} 

しかし、私はエミュレータでSMSメッセージを送信しようとしたとき、 MyDataSetObserverが呼び出されることはありません飽きない:mydataSetObserverはこのように実装されている

mCursor = mActivity.getContentResolver().query(Sms.CONTENT_URI, new String[] { 
      Sms.ADDRESS 
    }, null, null, null); 
mCursor.registerDataSetObserver(mydataSetObserver); 

を。

なぜ教えていただけますか?

ありがとうございます。

答えて

3

あなたがしようとしていることは、デバイスのSMSデータベースに変更を加えることができるように思えます。

私が過去に行ったことは、AndroidManifest.xmlのタグを使用することです。 READ_SMS権限とREAD_CONTACTS権限を使用する必要があるアプリケーションは、データベースへの書き込み権限を取得するのと同じ方法で行います。

私はAndroidManifest.xmlに、これらの必要な権限は次のタグを使用してファイルに定義:あなたが使用することができますlist of permissionsに含ま

はあなたに必要な機能を与える必要がありますWRITE_SMS、です。

注:私は新しいユーザーであるため、StackOverflowはこの記事のハイパーリンクを1つだけ投稿できるようにしましたが、これ以上はできませんでした。アンドロイドデベロッパーのウェブサイトにアクセスし、AndroidManifest.xmlファイルを検索し、必要に応じて詳細情報を表示してください。

1

DataSetObserverは、それらが登録されているDataSetObservableを観察します。 MyDataSetObservermCursorに登録され、mCursorが変更されたとき(たとえば、requeryの後)に通知されますが、ではなく以外のプロセス(メッセージングアプリケーションなど)によってコンテンツが書き込まれるときに通知されます。

残念ながら、送信されたテキストメッセージのイベントをリッスンする方法は現在ありません。content://sms/sentをポーリングして、おそらくContentObserverを使用しているようです。

This質問に関連しています。

+0

SMSの読み込みを通知する方法を教えてください。 「ポーリングcontent:// sms/sent」とはどういう意味ですか? – n179911

+0

ポーリングとは、smsコンテンツプロバイダ(例えば、タイマー付き)の頻繁な読み込みとチェックを意味します。 –

関連する問題