In android, how do I get the sender's phone number?

In android, how do I get the sender's phone number?

I am making an application that sends sms but takes money for it , so I can send sms at no charge? , please, say Me

-1
source share
3 answers

Sending SMS without spending money is possible only if you are implementing a FREE SMS message. Based on which country you are, you will find a FREE SMS GATEWAY and try to find any web services or APIs that they provide. Write a code using this and you can send SMS for free. To do of course, this requires an Internet connection on your phone.

If you implement BroadCast Receiver for incoming SMS, in this case the following code will track your incoming SMS and provide you with the message number and sender.

import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsMessage; import android.widget.Toast; public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //---get the SMS message passed in--- Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String str = ""; if (bundle != null) { //---retrieve the SMS message received--- 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]); str += "SMS from " + msgs[i].getOriginatingAddress(); str += " :"; str += msgs[i].getMessageBody().toString(); str += "\n"; } //---display the new SMS message--- Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); } } } 
+8
source

The .getOriginatingAddress () method in rahul code gives senders a phone number. so use it wherever you want. Simply!

+1
source

Here is an awesome link . It has the following tutorial link to the code below.

This worked great for me!

 public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { final String tag = TAG + ".onReceive"; Bundle bundle = intent.getExtras(); if (bundle == null) { Log.w(tag, "BroadcastReceiver failed, no intent data to process."); return; } if (intent.getAction().equals(SMS_RECEIVED)) { Log.d(tag, "SMS_RECEIVED"); String smsOriginatingAddress, smsDisplayMessage; /** * You have to CHOOSE which code snippet to use NEW (KitKat+), or legacy * Please comment out the for{} you don't want to use. */ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // API level 19 (KitKat 4.4) getMessagesFromIntent for (SmsMessage message : Telephony.Sms.Intents. getMessagesFromIntent(intent)) { Log.d(tag, "KitKat or newer"); if (message == null) { Log.e(tag, "SMS message is null -- ABORT"); break; } smsOriginatingAddress = message.getDisplayOriginatingAddress(); //see getMessageBody(); smsDisplayMessage = message.getDisplayMessageBody(); processReceivedSms(smsOriginatingAddress, smsDisplayMessage); } } else { // Processing SMS messages the OLD way, before KitKat, // this WILL work on KitKat or newer Android // PDU is a "protocol data unit", which is the industry // format for an SMS message Object[] data = (Object[]) bundle.get("pdus"); for (Object pdu : data) { Log.d(tag, "legacy SMS implementation (before KitKat)"); SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu); if (message == null) { Log.e(tag, "SMS message is null -- ABORT"); break; } smsOriginatingAddress = message.getDisplayOriginatingAddress(); // see getMessageBody(); smsDisplayMessage = message.getDisplayMessageBody(); processReceivedSms(smsOriginatingAddress, smsDisplayMessage); } } } // onReceive method 
0
source

Source: https://habr.com/ru/post/908974/


All Articles