2015-10-04 66 views
1

我已經實現了一個代碼,它以字符串格式從「已發送短信」中獲得第一個短信。從Android設備個別發送短信

我想從發件箱中的所有短信開始,從第一個開始。

我想將它們保存在SQLite數據庫中。

下面的代碼顯示了Toast中的第一個發送短信,但是我如何獲取所有發送的短信?

public class MainActivity extends Activity { 

    String address, name, date, msg, type; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     Button btn =(Button)findViewById(R.id.button1); 
     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Uri mSmsinboxQueryUri = Uri.parse("content://sms/sent"); 
       Cursor cursor1 = getContentResolver().query(mSmsinboxQueryUri, 
          new String[] { "_id", "thread_id", "address", "person", "date", 
              "body", "type" }, null, null, null); 
       startManagingCursor(cursor1); 
       String[] columns = new String[] { "address", "person", "date", "body","type" }; 
       if (cursor1.getCount() > 0) { 
        String count = Integer.toString(cursor1.getCount()); 
        //Log.e("Count",count); 
        System.out.println("Count:" + count); 
        while (cursor1.moveToNext()){ 
         address = cursor1.getString(cursor1.getColumnIndex(columns[0])); 
         name = cursor1.getString(cursor1.getColumnIndex(columns[1])); 
         date = cursor1.getString(cursor1.getColumnIndex(columns[2])); 
         msg = cursor1.getString(cursor1.getColumnIndex(columns[3])); 
         type = cursor1.getString(cursor1.getColumnIndex(columns[4])); 
        } 
       } 

       Toast.makeText(getApplicationContext(), address + "\n" + name + "\n" + date + "\n" + msg + "\n" + type, Toast.LENGTH_LONG).show(); 
      } 
     }); 

    } 


} 

回答

0
使用

cursor.moveToFirst(); 

之前線

while (cursor1.moveToNext()) 
+0

仍然只顯示按鈕單擊「發送框」中的第一個短信。我想去下一個。任何其他方法,我可以通過字符串逐個發送短信數據,以便我可以將它們添加到數據庫中? –

+0

是的,你可以使用以下,但是你的方法也是正確的..所以它也應該工作.. http://stackoverflow.com/questions/19856338/using-new-telephony-content-provider-to-read-sms –

0

代替而使用

if(cursor1.moveToFirst()) 
{ 
    for (int i = 0; i <cursor1.getCount(); i++) 
    { 
     address = cursor1.getString(cursor1.getColumnIndex(columns[0])); 
     name = cursor1.getString(cursor1.getColumnIndex(columns[1])); 
     date = cursor1.getString(cursor1.getColumnIndex(columns[2])); 
     msg = cursor1.getString(cursor1.getColumnIndex(columns[3])); 
     type = cursor1.getString(cursor1.getColumnIndex(columns[4])); 
     cursor1.moveToNext(); 
    } 
} 

並且也在結束靠近光標