繁体   English   中英

分别从android设备获取发送的短信

[英]Get sent sms from android device individually

我已经实现了一个代码,该代码以字符串格式从“已发送的短信”中获取了第一条短信。

我想从发件箱中首先获取所有短信。

我想将它们保存在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();
            }
        });

    }


}

采用

cursor.moveToFirst(); 

上线前

 while  (cursor1.moveToNext())

而不是同时使用

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();
   }
}

并且在末尾关闭光标

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM