2016-08-22 11 views
2

私は、次のコードを持っている:私は、ユーザーが/は、MMSメッセージを送受信する際に観察しようとしているAndroidのMMSオブザーバー

public class MmsObserver extends ContentObserver { 
    private Context context; 

    public MmsObserver(Handler handler) { 
     super(handler); 
     this.context = service.getBaseContext(); 
    } 

    @Override 
    public void onChange(boolean selfChange) { 
     super.onChange(selfChange); 

     Long largestDateCounted = Long.parseLong(UserPreferencesManager.getInstance().getValueFromPreferences(context, context.getString(R.string.preferences_current_counter), "0")); 
     String filter = "creator != ? and date > ?"; 
     String[] args = new String[]{context.getPackageName(), Long.toString(largestDateCounted)}; 
     Cursor c = context.getContentResolver().query(Constants.Mms, null, filter, args, null); 

     try { 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      c.close(); 
     } 
    } 
} 

。しかし、私の観察者は決して呼ばれません。私はこれに欠けているものがありますか?私は、下記の読んだ:ここ

Android MMS Monitoring

Android MMS Broadcast receiver

EDIT

は私がオブザーバーを実行している方法です:

mmsContent = new MmsObserver(new Handler()); 
getContentResolver().registerContentObserver(Constants.Mms, true, mmsContent); 
+0

あなたはObserverをどのように正確に登録していますか?あなたの 'サービス'(おそらく)は、変更が発生したときに実行されていると確信していますか? –

+0

私の質問が更新されました。はい、サービスが実行されていると私は常に実行している(と働いている)SMSオブザーバーがあります。 – KVISH

+0

ああ、申し訳ありませんが、あなたが使っている特定の「ウリ」を主に求めていました。少なくとも古いバージョンでは、 'content:// mms-sms /'にする必要があります。なぜかソースを掘り下げたわけではありませんが、何らかの理由で 'ContentObserver'に対して' content:// mms/'は動作しません。それがSMSのためにも発火することに注意してください。 –

答えて

1

MMS用ContentObserverを登録するときURIは少なくともcontent://mms-sms/である必要があります古いAndroidバージョン。なんらかの理由で、ContentObserverの場合、content://mms/は機能しません。ドラフトメッセージの変更が発生した可能性があります。

これは、ObserverがSMSテーブルへの変更に対しても起動することに注意してください。

+0

こんにちはマイク、あなたは私の質問のいくつかに答えて、あなたに何か質問したかった。私はここにプロジェクトを持っています:https://github.com/kalvish21/AndroidMessenger、私の目標はデスクトップからSMSとMMSを行うことができるAndroidアプリ用のデスクトップクライアントを作成することです。私はソースをオープンして自由にしたい。お手伝いに興味がありますか? macクライアントはほぼ完了しています。基本UIの改善はAndroidアプリで行われます。 – KVISH

+0

次のステップは、WindowsおよびLinux用のデスクトップクライアントです。 – KVISH

+0

いずれかの方法で返信してください、あなたから聞いて欲しいです。 – KVISH

関連する問題