Отправить смс через намерение
Я хочу отправить SMS с помощью намерения, но когда я использую этот код, он перенаправляет меня на неправильный контакт:
Intent intentt = new Intent(Intent.ACTION_VIEW);
intentt.setData(Uri.parse("sms:"));
intentt.setType("vnd.android-dir/mms-sms");
intentt.putExtra(Intent.EXTRA_TEXT, "");
intentt.putExtra("address", phone number);
context.startActivity(intentt);
Зачем?
Кроме того, я знаю способ следить за отправкой SMS, но я не знаю, как этот код:
Starting activity: Intent {
act=android.intent.action.SENDTO dat=smsto:%2B**XXXXXXXXXXXX** flg=0x14000000
cmp=com.android.mms/.ui.ComposeMessageActivity }
где XXXXXXXXXXXX - номер телефона.
Ответы
Ответ 1
Я разработал эту функциональность из одного блога. Есть 2 способа отправки смс.
- Откройте родной SMS композитор
- напишите ваше сообщение и отправьте из вашего приложения Android
Это код 1-го метода.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/btnSendSMS"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Send SMS"
android:layout_centerInParent="true"
android:onClick="sendSMS">
</Button>
</RelativeLayout>
Деятельность
public class SendSMSActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void sendSMS(View v)
{
String number = "12346556"; // The number on which you want to send SMS
startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null)));
}
/* or
public void sendSMS(View v)
{
Uri uri = Uri.parse("smsto:12346556");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "Here you can set the SMS text to be sent");
startActivity(it);
} */
}
ПРИМЕЧАНИЕ. - В этом методе вам не требуется разрешение SEND_SMS внутри файла AndroidManifest.xml.
Для 2-го метода обратитесь к этому блогу. Вы найдете хорошее объяснение здесь.
Надеюсь, что это поможет вам...
Ответ 2
Uri uri = Uri.parse("smsto:YOUR_SMS_NUMBER");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "The SMS text");
startActivity(intent);
Ответ 3
Создайте намерение так:
Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address","your desired phoneNumber");
smsIntent.putExtra("sms_body","your desired message");
startActivity(smsIntent);
Ответ 4
Попробуйте этот код. Он будет работать
Uri smsUri = Uri.parse("tel:123456");
Intent intent = new Intent(Intent.ACTION_VIEW, smsUri);
intent.putExtra("sms_body", "sms text");
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
Надеюсь, это поможет вам.
Ответ 5
Надеюсь, что это работа, это работает в моем приложении
SmsManager.getDefault().sendTextMessage("Phone Number", null, "Message", null, null);
Ответ 6
/**
* Intent to Send SMS
*
*
* Extras:
*
* "subject"
* A string for the message subject (usually for MMS only).
* "sms_body"
* A string for the text message.
* EXTRA_STREAM
* A Uri pointing to the image or video to attach.
*
* For More Info:
* https://developer.android.com/guide/components/intents-common#SendMessage
*
* @param phoneNumber on which SMS to send
* @param message text Message to send with SMS
*/
public void startSMSIntent(String phoneNumber, String message) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
// This ensures only SMS apps respond
intent.setData(Uri.parse("smsto:"+phoneNumber));
intent.putExtra("sms_body", message);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
Ответ 7
Создайте Намерение как это:
Uri uriSms = Uri.parse("smsto:1234567899");
Intent intentSMS = new Intent(Intent.ACTION_SENDTO, uriSms);
intentSMS.putExtra("sms_body", "The SMS text");
startActivity(intentSMS);
Ответ 8
Это другое решение, использующее SMSManager:
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("PhoneNumber-example:+989147375410", null, "SMS Message Body", null, null);
Ответ 9
Я использовал этот код для отправки SMS.
String phoneNumber="000000000000";
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + phoneNumber));
intent.putExtra("address", phoneNumber);
intent.putExtra("sms_body", smsContent);
startActivityForResult(intent,RESULT_CODE);
это правильно отправит смс
Но у меня была проблема с onActivityResult(), код результата всегда получает 0, я не знаю, как решить эту проблему, и как я узнаю, что SMS отправлено или нет?
Ответ 10
curl -X POST http://textita.com/text \
--data-urlencode phone='9087938341' \
--data-urlencode message='Hello world' \
-d key=textita
Ответ 11
Если вы хотите определенное сообщение, используйте это:
String phoneNo = "";//The phone number you want to text
String sms= "";//The message you want to text to the phone
Intent smsIntent = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", phoneNo, null));
smsIntent.putExtra("sms_body",sms);
startActivity(smsIntent);
Ответ 12
- Разрешение на манифест (вы можете поставить его после или перед "приложением")
uses-permission android:name="android.permission.SEND_SMS"/>
- например, сделайте кнопку и напишите приведенный ниже код (как было написано ранее
Prem
в этой теме) и замените указанный ниже номер телефона на реальный номер, он будет работать:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "phone_Number", null)));
Ответ 13
Добавьте try-catch, иначе телефоны без сима вылетят.
void sentMessage(String msg) {
try {
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("sms_body", msg);
startActivity(smsIntent);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "No SIM Found", Toast.LENGTH_LONG).show();
}
}
Ответ 14
попробуйте этот код. Он будет работать
Intent intent = new Intent(this, sendSMS.class);
intent.putExtra("key_1",values(String SMS meg));
intent.putExtra("key_2",values(String mobile No));
startActivity(intent);
sendSMS Class in
{
String msg = getIntent().getStringExtra("key_1", 0)
String no = getIntent().getStringExtra("key_2", 0)
// String no = "5556";
PendingIntent SendPI = PendingIntent.getBroadcast(this,0, new Intent(), 0);
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(no,null,msg, SendPI, null);
}
to try to send sms this way