Programmatically send SMS message in Android App on tablet without telephony - android

Trying to send a SMS message through my Android App on a device without telephony like a Tablet without user intervention
Api 23
Would like to either:
1) Find a SMS text program that I incorporate into my Android app to send SMS texts using a device that does not have telephony available - I have no idea if this is possible - have tried to write but haven't figured it out.
OR
2) use a SMS app from the Google play store
I have also tried to send through an app (Textme, WhatsApp, Skype) downloaded from Google Play. I don't seem to be able to fill in the TO field see the code below. Lines that have the // have tried
String strPhone = "92xxxxxxxx";
// Uri sms_uri = Uri.parse("smsto:" + strPhone);
Uri sms_uri = Uri.parse("smsto:+92xxxxxxxx");
// Intent sms_intent = new Intent(Intent.ACTION_SENDTO, sms_uri);
Intent i = new Intent(android.content.Intent.ACTION_SEND, sms_uri);
i.setPackage("com.textmeinc.textme");
// i.putExtra("sms_body", "Greetings!");
i.putExtra("sms_body", "Good Morning ! how r U ?");
i.setType("vnd.android-dir/mms-sms");
// i.putExtra(Intent.EXTRA_SUBJECT,"92xxxxxxxx");
i.putExtra("address", "92xxxxxxxx");
i.putExtra(Intent.EXTRA_TEXT, "Hi from me");
// i.putExtra(Intent.EXTRA_PHONE_NUMBER, strPhone);
// i.putExtra(Insert.PHONE, "92xxxxxxxx");
// i.putExtra(ContactsContract.Intents.Insert.PHONE, "(408) 555-1212");
// i.setData(Uri.parse("tel:" + strPhone));
i.setData(Uri.parse("sms:" + strPhone));
i.setType("text/plain");
// i.setType("vnd.android-dir/mms-sms"); does not work
BT_debugger.showIt( "textme" );
i.putExtra("chat",true);
i.putExtra("sms_body", "test");
try {
BT_debugger.showIt( "textme sms found" );
startActivity(i);
} catch (android.content.ActivityNotFoundException ex) {
BT_debugger.showIt( "textme sms not found" );
}

Related

Couldn't send SMS from Activity , says "could not start conversation"

This code was working, it opens the default SMS app and message appears in textbox , ready to enter number and send, But now this code doesn't work from Above marshmallow.
but now It does not work if the default app is Messaging
Uri uri = Uri.parse("smsto:" + mphoneno);
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", message);
mActivity.startActivity(it);
try below method to open default messaging app
public void sendSMS() {
String number = "12346556"; // The number on which you want to send SMS
startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null)));
}

How to send app invite using android studio

I need to send app invitation message from my app to friends via whatsapp,facebook,hike,... with the message and playstore link.I have seen this kind of invitations in other apps like hike,whatscall,... like the
attached image
I want to send exactly the same kind of message with the playstore link and app logo for my app also and it should be shared using all the available sharing option in users mobile.In my application i have included a inform friends menu and on clicking on that this function should work.I have seen firebase app invite examples but it needs google-services.json and i think it will only send text message from users email,I am not sure about that.
Sending text msg or image or both via app can be done using Action_send intent. The following code should work for your requirement.
void shareImageWithText(){
Uri contentUri = Uri.parse("android.resource://" + getPackageName() + "/drawable/" + "ic_launcher");
StringBuilder msg = new StringBuilder();
msg.append("Hey, Download this awesome app!");
msg.append("\n");
msg.append("https://play.google.com/store/apps/details?id=Your_Package_Name"); //example :com.package.name
if (contentUri != null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // temp permission for receiving app to read this file
shareIntent.setType("*/*");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, msg.toString());
shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
try {
startActivity(Intent.createChooser(shareIntent, "Share via"));
} catch (ActivityNotFoundException e) {
Toast.makeText(getApplicationContext(), "No App Available", Toast.LENGTH_SHORT).show();
}
}
}

send whatsapp messages to someone not on contact list from android app

I'm developing an application that can send message through whatsapp. I have implemented it by following this answer but it only works for contacts that on my contact list. It keeps error when i try to send message to contacts that are not in my contact list although the user already registered on whatsapp using that number (contact). Here is the message from whatsapp:
here is my code:
try {
Uri uri = Uri.parse("smsto: " + smsNumber);
//Timber.e("smsNumber %s", uri.toString());
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.setPackage("com.whatsapp");
startActivity(Intent.createChooser(i, ""));
} catch (Exception e) {
Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
}
is there any solutions ?
you can send via WhatsApp API even if he is not in your contact
String whatsappUrl = String.format("https://api.whatsapp.com/send?phone=%s&text%s",PhoneNumber,msg);
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(whatsappUrl));
browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
p_context.startActivity(browserIntent);

send a photo through MMS message

I am trying to send a photo through MMS message, I am using the following known snippet
Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_TEXT, "This is an MMS message");
String sendfilepath = "file://" + sendfile.toString() + ".jpg";
i.putExtra(Intent.EXTRA_STREAM,Uri.parse(sendfilepath)) ;
i.setType("image/jpeg");
It works with my Sony device. The pop up menu shows the messaging app along with other apps.
But with HTC it does not show the Messaging app. It shows Bluetooth, Facebook, Mail, etc. How can I make it show the Messaging app in the "Complete action using" list
You can use this technique to check for HTC sense device and react appropriately to send the proper "version" of the intent.
Uri uri = Uri.fromFile(imgFile);
//HTC Sense intent
Intent sendIntent = new Intent("android.intent.action.SEND_MSG");
sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
sendIntent.setType("image/"+type);
List<ResolveInfo> resolves = getPackageManager().queryIntentActivities(sendIntent,PackageManager.MATCH_DEFAULT_ONLY);
if (resolves.size() > 0) {
// This branch is followed only for HTC
startActivity(sendIntent);
} else {
// Else launch the non-HTC sense Intent
sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
sendIntent.setType("image/"+type);
startActivity(Intent.createChooser(sendIntent,"Send"));
}

sms application intent not working in android 3.0 and above

This is the piece of code I am using to call the SMS application:
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri));
intent.putExtra("sms_body", body);
intent.putExtra("compose_mode", true);
launchIntent(intent);
On devices with an os version below Android 3.0, the above code is working fine, the SMS page gets opened and the message to be sent and the numbers get prefilled correctly but in Android 3.0 and above devices this is not working anymore.
In Android 3.0 the SMS intent is called and the number gets filled and not the text where as in Android 4.0 the SMS intent is called and the text gets filled and not the number.
Does anyone know the solution for this problem?
This code will works for all versions of android
String smsBody = Resources.getString("InvitationBody", getBaseContext()) + Local.User.FirstName;
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", smsBody);
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
Following code works perfect
String body = "This is the message i need to send";
String num = "smsto:999416231";
String[] tokens = num.split(":");
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("address",tokens[1]);
sendIntent.putExtra("sms_body", body);
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
The code which i have mentioned in my question is use to pass the number as Uri.parse(uri) and its value is "smsto:9941..."
But in the new code i am splitting the text and number.

Categories

Resources