2011-11-10 5 views
2

プログラムでメッセージを挿入するアプリケーションを1つ作成しました。そのアプリケーションで正常に実行されています。データベースでデータが変更された後にcontent-resolverに通知するにはどうすればよいですか?

レコードに指定されたものを挿入します。その後、デバイスやエミュレータのメッセージに挿入されたメッセージは表示されません。それをチェックしてください。

なぜこのようなことが起こっているのかわかりません。タスクマネージャーでメッセージングを停止したときにメッセージを見ることができます。その後、あなたは挿入されたメッセージを見ることができます。

このコードには何がありません。

敬具 - SPK

コード

活動:

public class SMS extends Activity 
{ 
    Button btnSendSMS; 
    EditText txtPhoneNo; 
    EditText txtMessage; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   
     btnSendSMS = (Button) findViewById(R.id.btnSendSMS); 
     final insert i = new insert(this); 
     btnSendSMS.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       i.method_inser(); 
       Toast.makeText(getApplicationContext(), "Inserted", Toast.LENGTH_SHORT).show();    
      } 
     }); 
    } 
} 

クラス挿入:

public class insert 
{ 
    Context ctx,context; 
    ContentResolver cr; 

    public insert(Context context) 
    { 
     this.context = context; 
     cr = context.getContentResolver(); 
    } 
    public void method_inser() 
    { 
     Uri smsuri = Uri.parse("content://sms/"); 
     ContentValues iv = new ContentValues(); 
     String[] final_result = {"1","1","15555215556","3","1320753694842","0","1","-1","1","0","null","Gingerbread","null","0","0","1"}; 
     iv.put("_id", final_result[0]); 
     iv.put("thread_id", final_result[1]); 
     iv.put("address", final_result[2]); 
     iv.put("person", final_result[3]); 
     iv.put("date", final_result[4]); 
     iv.put("protocol", final_result[5]); 
     iv.put("read", final_result[6]); 
     iv.put("status", final_result[7]); 
     iv.put("type", final_result[8]); 
     iv.put("reply_path_present", final_result[9]); 
     iv.put("subject", final_result[10]); 
     iv.put("body", final_result[11]); 
     iv.put("service_center", final_result[12]); 
     iv.put("locked", final_result[13]); 
     iv.put("error_code", final_result[14]); 
     iv.put("seen", final_result[15]); 
     cr.insert(smsuri, iv); 
    } 
} 
+0

あなたの質問は非常に読みにくく、私は私は本当にあなたの問題を持っているとは思わない。たぶんあなたはMessageQueuesを使用していて、メッセージはバックグラウンドコアアプリケーションによって消費されていますか?私が本当に理解していないので、関連するコードを追加して質問を書き直してください。 –

+0

@PhilippWendt:私の編集した質問を参照してください。 – Praveenkumar

+0

私は質問を編集し、あなたが提供したコードを追加したので、誰かが助けてくれるかもしれません(残念ながら私はできません)。私は、いくつかのコードが欠落しているという気持ちを持っています(バックグラウンドサービスに関連するものはありません)。そして、私はまだあなたの質問を得ていません。しかし、多分誰かが助けることができます。 –

答えて

3

_idthread_idprimary keyであり、あなたがそう修正値のすべての時間を挿入しようとしています一度だけ動作します

there are no any column in a sms table

はまた、あなたの受信トレイに新しいメッセージを挿入した後、あなたがコンテンツリゾルバ

使用これを使用して変更通知しなければならないマニフェスト

<uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.WRITE_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS"> 

に以下の権限を追加する必要がありますので、また二つのフィールドerror_codeseenを削除変更を通知するコード

Uri uri = cr.insert(smsuri, iv); 
cr.notifyChange(uri, null); 
関連する問題