如何从用户在安卓应用程序中输入的短信地址读取短信?



我正在为Android应用程序读取短信程序,我想从用户在编辑文本中输入的SMS Address中读取短信。但是我无法从用户输入的短信地址收到短信。我已经输入了简单的代码,但它不起作用。

我做了一个静态读取短信程序。现在我想做一个动态程序。

以下是我的简单代码:

Transaction_History.java
public class Transaction_History extends AppCompatActivity
{
private static Transaction_History inst;
ArrayList<String>smsMessageList = new ArrayList<>();
ListView smsListView;
ArrayAdapter arrayAdapter;
EditText e1;
Button b1;

public static Transaction_History instance()
{
return  inst;
}
public  void onStart()
{
super.onStart();
inst = this;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transaction__history);
setTitle("All Transaction History");
e1=(EditText)findViewById(R.id.sms);
b1=(Button)findViewById(R.id.emtersms);
smsListView=(ListView)findViewById(R.id.listview1);
arrayAdapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,smsMessageList);
smsListView.setAdapter(arrayAdapter);
if(ContextCompat.checkSelfPermission(getBaseContext(),"android.permission.READ_SMS") == PackageManager.PERMISSION_GRANTED)
{
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
refreshsmsinbox();
}
});
}
else
{
final int REQUEST_CODE_ASK_PERMISSION = 123;
ActivityCompat.requestPermissions(this,new String[]{"android.permission.READ_SMS"},REQUEST_CODE_ASK_PERMISSION);
}
}
private  void refreshsmsinbox()
{
ContentResolver contentResolver =getContentResolver();
String[] indexadd={"body,address"};
Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"),indexadd,"address="+e1.getText().toString(),null,null,null);
int indexBody = smsInboxCursor.getColumnIndex("body");
int indexaddress = smsInboxCursor.getColumnIndex("address");
if (indexBody < 0  || !smsInboxCursor.moveToFirst()) return;
arrayAdapter.clear();
do
{
String str= "SMS From : "+smsInboxCursor.getString(indexaddress) + "n" +smsInboxCursor.getString(indexBody)+ "n";
arrayAdapter.add(str);
Toast.makeText(getApplicationContext(),"SMS FETCHED", Toast.LENGTH_LONG).show();
} while (smsInboxCursor.moveToNext());
}
public  void updateList(final String smsMessage)
{
arrayAdapter.insert(smsMessage,0);
arrayAdapter.notifyDataSetChanged();
}
}

我已经尝试了e1.gettext.tostring()方法,但它会导致错误。

仅在内容解析程序行中编辑。内部查询 :

"address=' "+e1.getText((.toString((+" ' "

(此解决方案对于那些想要做此类程序的人很有用(

最新更新