作者:欧阳火凡 | 来源:互联网 | 2023-09-02 18:02
我正在做Android应用程序的SMS读取程序,我想从用户在Edittext中输入的SMS Address
中读取SMS。但是我无法从用户输入的SMS地址中获取SMS。我已经输入了简单的代码,但是它不起作用。
我已经完成了一个静态的读取SMS程序。现在我想做一个动态程序。
下面是我的简单代码:
Transaction_History.java
public class Transaction_History extends AppCompatactivity
{
private static Transaction_History inst;
ArrayListsmsMessageList = 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(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);
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()+”'“
(此解决方案对于想要执行此类程序的人很有用)