Как получить номер телефона отправителя sms?
Получаю имя отправителя из такого кода:
ContentResolver contentResolver = getContentResolver();
Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);
int indexBody = smsInboxCursor.getColumnIndex("body");
int indexAddress = smsInboxCursor.getColumnIndex("address");
String from = smsInboxCursor.getString(indexAddress);
Как получить номер телефона отправителя?
public class SmsActivity extends Activity implements OnItemClickListener {
String tell,tellto,struniqumdate,struniqum="";
String bodymoney="0.0";
private static SmsActivity inst;
ArrayList<String> smsMessagesList = new ArrayList<String>();
ListView smsListView;
ArrayAdapter arrayAdapter;
public static SmsActivity instance() {
return inst;
}
@Override
public void onStart() {
super.onStart();
inst = this;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
smsListView = (ListView) findViewById(R.id.SMSList);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, smsMessagesList);
smsListView.setAdapter(arrayAdapter);
smsListView.setOnItemClickListener(this);
Button post1 = (Button)findViewById(R.id.post1);
post1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//on_Click_Update();
}
});
refreshSmsInbox();
}
public void refreshSmsInbox() {
ContentResolver contentResolver = getContentResolver();
Cursor smsInboxCursor = contentResolver.query(Uri.parse("content://sms/inbox"), null, null, null, null);
int indexBody = smsInboxCursor.getColumnIndex("body");
int indexAddress = smsInboxCursor.getColumnIndex("address");
//smsMessage.getServiceCenterAddress();
int date1 = smsInboxCursor.getColumnIndex("date");
//int indexCentre = smsInboxCursor.getColumnIndex("servicecenter");
if (indexBody < 0 || !smsInboxCursor.moveToFirst()) return;
arrayAdapter.clear();
do {
String date = smsInboxCursor.getString(date1);
Long timestamp = Long.parseLong(date);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);
Date finaldate = calendar.getTime();
String smsDate = finaldate.toString();
String fromProvider = smsInboxCursor.getString(indexAddress);
String body = smsInboxCursor.getString(indexBody);
String numberpayd = StringUtils.substringBetween(body, "*", ".");
//if (fromTcell.contains("Tcell") ) { savefromtu="Tcell"+body.su "*","." }
String str = "SMS From Provider: " + fromProvider +
"\n"+ "Date: "+smsDate+
// "SMS Service Centre: " + smsInboxCursor.getString(indexCentre) +
"\n" + body + "\n";
if (fromProvider.equals("Tcell") && body.contains("*") )
{
try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }
tell = fromProvider;
tellto = numberpayd;
//struniqum = fromTcell +" "+ numberpayd;
struniqumdate = smsDate;
arrayAdapter.add(str + "**********************" + struniqum);
bodymoney = StringUtils.substringBetween(body, "*", "*");
bodymoney = bodymoney.replaceAll("\\s","");
bodymoney = bodymoney.replaceAll(",",".");
// bodymoney="0.80";
on_Click_Update();
try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); }
on_Click_Update_Total();
}
} while ( smsInboxCursor.moveToNext() );
}
public void updateList(final String smsMessage) {
arrayAdapter.insert(smsMessage, 0);
arrayAdapter.notifyDataSetChanged();
}
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
try {
String[] smsMessages = smsMessagesList.get(pos).split("\n");
String address = smsMessages[0];
String smsMessage = "";
for (int i = 1; i < smsMessages.length; ++i) {
smsMessage += smsMessages[i];
}
String smsMessageStr = address + "\n";
smsMessageStr += smsMessage;
Toast.makeText(this, smsMessageStr, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
private void on_Click_Update() {
// String URL = "http://test";
RequestQueue requestQueue = Volley.newRequestQueue(this);
StringRequest request = new StringRequest(com.android.volley.Request.Method.POST, "http://test", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("onResponse", response);
Toast.makeText(SmsActivity.this, "SENT SUCCESSFULLY!" + bodymoney, Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("onError", error.toString());
Toast.makeText(SmsActivity.this, "PLEASE CHECK YOUR INTERNET CONNECTION!", Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
//params.put("id",idq.getText().toString());
//if()
String tellto_r="+9"+tellto.replaceAll("\\s+","");
params.put("tell",tell);
params.put("tellto",tellto_r);
params.put("date",tellto_r+struniqumdate);
params.put("status",bodymoney);
//params.put("id","38");
//params.put("reply", "38-------------------------");
return params;
}
};
requestQueue.add(request);
}
private void on_Click_Update_Total() {
// String URL = "http://test.php";
RequestQueue requestQueue = Volley.newRequestQueue(this);
StringRequest request = new StringRequest(com.android.volley.Request.Method.POST, "http://test.php", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("onResponse", response);
Toast.makeText(SmsActivity.this, "SENT SUCCESSFULLY!" + bodymoney, Toast.LENGTH_LONG).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("onError", error.toString());
Toast.makeText(SmsActivity.this, "PLEASE CHECK YOUR INTERNET CONNECTION!", Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
//params.put("id",idq.getText().toString());
//if()
String tellto_r="+9"+tellto.replaceAll("\\s+","");
params.put("tell",tellto_r);
// params.put("tellto",tellto_r);
// params.put("date",tellto_r+struniqumdate);
// params.put("status",bodymoney);
//params.put("id","38");
//params.put("reply", "38-------------------------");
return params;
}
};
requestQueue.add(request);
}
}
public class SmsBroadcastReceiver extends BroadcastReceiver {
String origin_address;
long origin_index;
String n1,n2;
public static final String SMS_BUNDLE = "pdus";
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String smsBody = smsMessage.getMessageBody().toString();
origin_address = smsMessage.getOriginatingAddress();
origin_index = smsMessage.getTimestampMillis();
n1 = smsMessage.getServiceCenterAddress();
n2 = smsMessage.getEmailBody();
// String n2 = smsMessage.getServiceCenterAddress();
smsMessageStr += "SMS From: " + origin_address + "\n";
smsMessageStr += "TimestampMillis: " + origin_index + "\n";
smsMessageStr += "Sms Service Center: " + n1 + "\n";
smsMessageStr += "Sms Class: " + n2 + "\n";
smsMessageStr += smsBody + "\n";
}
// Toast.makeText(context, smsMessageStr + "OOOOOOOONNNNNNNNN RECEIVEEEEEEEEEEEEE", Toast.LENGTH_SHORT).show();
Toast.makeText(context, String.valueOf(n2), Toast.LENGTH_LONG).show();
//this will update the UI with message
SmsActivity inst = SmsActivity.instance();
inst.updateList(smsMessageStr);
}
}
}
Ответы (1 шт):
Автор решения: Maks
→ Ссылка
Вам нужно создать receiver который будет принимать смс. :
Manifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />
....
<receiver android:name=".listener.SmsListener">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
SmsListener.java
public class SmsListener extends BroadcastReceiver{
private SharedPreferences preferences;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String msg_from;
if (bundle != null){
try{
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for(int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
msg_from = msgs[i].getOriginatingAddress(); //ЭТО НОМЕР!!!!!!!!!/////
String msgBody = msgs[i].getMessageBody();
}
}catch(Exception e){
// Log.d("Exception caught",e.getMessage());
}
}
}
}
}