آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ارسال SMS بدون ثبت در دیتابیس گوشی (حل شد)

SMS
Vahid  10 سال پیش  10 سال پیش
+7 0

همانطور که از عنوان مشخصه می خوام SMS بفرستم اما در INBOX گوشی ذخیره نشه.البته سرچ زدم و به این نتیجه رسیدم که از اندروید KITKAT به بعد فقط نرم افزار پیش فرض SMS قابلیت حذف پیام رو داره:
اینم منبع: http://stackoverflow.com/questions/25247303/android-delete-sms-messages-in-sent-box
البته تو Android Developer هم دیدم.
ولی مسئله اینه که نرم افزار بانک صادرات داره با SMS کار می کنه.
کسی می دونه نرم افزار صادرات چجوری کار می کنه؟

+3 0
امتحان نکردم ولی فکر کنم از Data Message یا Binary Message استفاده میکنن، این لینک مثالش هست. (10 سال پیش)
+2 0
خیلی ممنون جناب نصرتی. باید امتحان کنم. (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Vahid  10 سال پیش
+9 0

ضمن تشکر از Nosrati جواب ایشون کاملا درسته.
برای استفاده سایرین کد کامل رو اینجا هم می زارم:

برای ارسال می تونید از کد زیر استفاده کنید:

String messageText ="Body Message!"; 
String messageNumber="09361234567";
short SMS_PORT =8901;
//اینجا می تونید از هر پورت دیگه ای استفاده کنید
SmsManager smsManager =SmsManager.getDefault(); smsManager.sendDataMessage(
messageNumber,null, SMS_PORT, messageText.getBytes(),null,null);

SMS ای که با این روش ارسال می شه علاوه بر اینکه در Send گوشی فرستنده نمی آد در Inbox گوشی گیرنده هم نمیاد. برای اینکه بتونید در گوشی گیرنده SMS رو دریافت کنید باید Braoadcast مخصوص پورت داده شده به صورت زیر تعریف کنید:
1- تعریف dataSmsRecivver در manifest:

<receiverandroid:name=".SMSReceiver">
<intent-filter>
<actionandroid:name="android.intent.action.DATA_SMS_RECEIVED"/>
<data
android:scheme="sms"/>
<dataandroid:port="8901"/>
</intent-filter>
</receiver>

2- تعریف یک Broadcast جهت دریافت پیام:

 public class SMSReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();

String recMsgString = "";
String fromAddress = "";
SmsMessage recMsg = null;
byte[] data = null;
if (bundle != null) {
Log.i("LOG", "bundle not null");
Toast.makeText(G.context, "bundle not null", Toast.LENGTH_LONG)
.show();
// ---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdus.length; i++) {
recMsg = SmsMessage.createFromPdu((byte[]) pdus[i]);

try {
data = recMsg.getUserData();
} catch (Exception e) {

}
if (data != null) {
for (int index = 0; index < data.length; ++index) {
recMsgString += Character.toString((char) data[index]);
}
}

fromAddress = recMsg.getOriginatingAddress();

}
Log.i("LOG", "Text Recived :" + recMsgString + " from :"
+ fromAddress);
Toast.makeText(G.context, "SMS Received: " + recMsgString,
Toast.LENGTH_LONG).show();
}
}
}

+1 0
کد رو تست کردم اما نتیجه نگرفتم! وقتی پیامک ارسال میشه گیرنده دریافتش نمیکنه! من میخوام پیامکی ارسال بشه فرضا به یک گوشی ساده (نوکیا 1100)... همچنین میخوام که اگر گیرنده یک پاسخ فرستاد با اپلیکیشن بتونم بخونم مقدارش رو و در اینباکس من هم دیده نشه (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .