I am really confused regarding one issue. Precisely, I'm sending a SMS to a number (fetched from web-service) each time application is opened. Code Snippet is as :
private void sendSMSToDevices() {
try {
String SENT = "SentSMSActivity";
String DELIVERED = "ReceivedSMSActivity";
PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED), 0);
SmsManager smsManager = SmsManager.getDefault();
if (flagFirstTime) {
smsManager.sendTextMessage(phone_one, null, message_one, sentPI, deliveredPI);
} else {
smsManager.sendTextMessage(phone_two, null, message_two, sentPI, deliveredPI);
}
// Toast.makeText(getApplicationContext(), "SMS Sent!",
// Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "SMS faild, please try again later!", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
uses permissions in Manifest file are as ::
android.permission.SEND_SMS
android.permission.ACCESS_NETWORK_STATE
android.permission.INTERNET
android.permission.RECEIVE_BOOT_COMPLETED
Each time I open the app, it dispays an alert prior to send SMS saying "(my_App_Name) would like to send a message to (phone_nember)"
I never put any alert inside my code. Why is it happening like this? Please Help.
Related
I have tried this code but I did not receive SMS in my phone.
Intent intent=new Intent(getApplicationContext(),MainActivity.class);
PendingIntent pi=PendingIntent.getActivity(getApplicationContext(), 0, intent,0);
//Get the SmsManager instance and call the sendTextMessage method to send message
SmsManager sms=SmsManager.getDefault();
sms.sendTextMessage("88xxxxxxx0", null, "hello javatpoint", pi,null);
You can send message from your application through this:
public void sendSMS(String MoNo, String msg) {
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(MoNo, null, msg, null, null);
Toast.makeText(getApplicationContext(), "Message Sent",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),ex.getMessage().toString(),
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
Also you need to give SEND_SMS permission in AndroidManifest.xml to send message
<uses-permission android:name="android.permission.SEND_SMS" />
Thanks. Happy Coding...
I am trying to send a message to my phone number whenever i click button in my apps. The apps say "message successfully send" but i did not get any sms. I am not sure whether its my phone number format or my smsmanager function is not correct. Here is my code. Any help would be appreciate. Thank you.
public void sendSmsByManager() {
try {
// Get the default instance of the SmsManager
SmsManager smsManager = SmsManager.getDefault();
PendingIntent sentPI;
String SENT = "SMS_SENT";
sentPI = PendingIntent.getBroadcast(this, 0,new Intent(SENT), 0);
//phone number format is Malaysia +60134567891
smsManager.sendTextMessage(phoneNumber.getText().toString(),
null,
smsBody.getText().toString(),
sentPI,
null);
Toast.makeText(getApplicationContext(), "Your sms has successfully sent!",
Toast.LENGTH_LONG).show();
} catch (Exception ex) {
Toast.makeText(getApplicationContext(),"Your sms has failed...",
Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}
I am trying to write a Sms app.
When I use
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, body, null, null);
to send sms, the app works fine on the main account, but it always fail to send sms when I switch to the second account.
I already give the second account permission to send sms in Settings, and also add
<uses-permission android:name="android.permission.SEND_SMS" />
in Manifest.xml
Also, since the target sdk version is 23, I also request permission during the run time. However, it is still not working after all permissions are granted. T_T
It will not crash, it just does nothing. Therefore, I think it is an issue related to permission, I just don't know where the problem is.
Anyone one help?
UPDATE:
public void sendSMS(Context context, String phoneNumber, String messageBody)
{
Intent sentIntent = new Intent("SENT");
sentIntent.putExtra("phone_number", phoneNumber);
sentIntent.putExtra("message_body", messageBody);
PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, PendingIntent.FLAG_CANCEL_CURRENT);
PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent("DELIVERED"), 0);
/**Catch the sms send fail to check wether cause by permission deny**/
try{
Log.d("Debug phoneNumber", phoneNumber );
Log.d("Debug messageBody", messageBody);
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, messageBody, sentPI, deliveredPI);
}
catch (Exception e)
{
e.printStackTrace();
}
}
The two Log.d() methods can work, but smsManager.sendTextMessage() does nothing if switch to the secondary account.
I created simple code to send SMS which is working on Xperia U and QMobile (local brand).
But it is not working on Samsung Galaxy S3 LTE
They code is
import android.telephony.SmsManager;
SmsManager sms = SmsManager.getDefault();
PendingIntent sentPI;
String SENT = "SMS_SENT";
sentPI = PendingIntent.getBroadcast(activity, 0,new Intent(SENT), 0);
sms.sendTextMessage("01234567890", null, msg, sentPI, null);
first be sure to add the permission to send SMSs
<uses-permission android:name="android.permission.SEND_SMS" />
and then surround your code with try and catch to find the error that prevents sending in Samsung s3 lte ..
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("01234567890", null, msg, sentPI, null);
Toast.makeText(getApplicationContext(), "SMS Sent!",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"SMS faild, please try again later!",
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
You have missed to call PendingIntent deliveredPI
Try this code..!!
PendingIntent sentPI =PendingIntent.getBroadcast(activity, 0,new Intent(SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,new Intent(DELIVERED), 0);
sms.sendTextMessage("01234567890", null, msg, sentPI, deliveredPI);
You can try using this library android-smsmms to send SMS
Settings sendSettings = new Settings();
sendSettings.setDeliveryReports(true);
sendSettings.setSplit(true);
Message mMessage = new Message(textToSend, addressToSendTo);.
sendTransaction.sendNewMessage(message, null)
Hope this helps you
EDIT
com.klinker.android.send_message.Settings sendSettings = new com.klinker.android.send_message.Settings();
sendSettings.setDeliveryReports(true);
sendSettings.setSplit(true);
sendSettings.setSplitCounter(true);
sendSettings.setStripUnicode(true);
com.klinker.android.send_message.Transaction sendTransaction = new com.klinker.android.send_message.Transaction(getApplicationContext(), sendSettings);
com.klinker.android.send_message.Message mMessage = new com.klinker.android.send_message.Message("Message", "9999999999");
sendTransaction.sendNewMessage(mMessage, 0);
I have use SmsManager.getDefault().sendTextMessage but not send sms i want to method programmatically send sms Please see this code
EDIT CODE:
public void sendEmail(View view){
if (hasConnection() == false){
Intent goPop = new Intent(getApplicationContext(),ShowPopup.class);
startActivity(goPop);
finish();
}
statusOfGPS = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
// Set Email option
final Intent i = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",OpsEmail, null));
//Check Send SMS
if (mSMSCheckbox.isChecked()){
SMS = true;
}else{
SMS = false;
}
//Check GPs
if (statusOfGPS == true){
LocationBy = "GPS";
}else{
LocationBy = "INTERNET";
}
setUpAddress();
//SMS true
if (mLocationClient != null && mLocationClient.isConnected() && SMS == true) {
//set massage to send
DescribeText = "This is a Emergency message \n\n PLEASE HELP ME!!! at\n\n "+
addressText+ "\n Location("+LocationBy+"):("+mLocationClient.getLastLocation().getLatitude() + mLocationClient.getLastLocation().getLongitude()+
") \n\n Please check maps <a href='https://maps.google.com/maps?q="+mLocationClient.getLastLocation().getLatitude()+","+mLocationClient.getLastLocation().getLongitude()+"&ll="+mLocationClient.getLastLocation().getLatitude()+","+mLocationClient.getLastLocation().getLongitude()+"&z=17'>here</a>";
//send SMS First
String sent = "android.telephony.SmsManager.STATUS_ON_ICC_SENT";
SmsManager smsManager = SmsManager.getDefault();
PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(sent), 0);
smsManager.sendTextMessage(OpsPhoneNumber, null, DescribeText, pi,null);
//send email
i.putExtra(Intent.EXTRA_SUBJECT, "Emergency Location");
i.putExtra(Intent.EXTRA_TEXT,Html.fromHtml(DescribeText));
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(getApplicationContext(), "There are no email clients installed.", Toast.LENGTH_LONG).show();
}
Log.d(TAG, "gps =" + statusOfGPS);
}
}
Next line of //send SMS First
i use
SmsManager.getDefault().sendTextMessage(OpsPhoneNumber, null,
DescribeText, null,null);
and in my manifest file i have:
<uses-permission android:name="android.permission.SEND_SMS"/>
My device to test is android 4.2.2 and 4.1.1
but apps don't send sms how to fix this?
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("", null, "< message body>", null, null);
SmsManager require, SMS_SEND permission in your android mainfest.