بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

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

مدیریت گفتگو
SMS
Vahid 10 سال پیش
آخرین تغییر: 10 سال پیش

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

نظرات

Spirit 10 سال پیش
امتحان نکردم ولی فکر کنم از Data Message یا Binary Message استفاده میکنن، این لینک مثالش هست.
Vahid 10 سال پیش
خیلی ممنون جناب نصرتی. باید امتحان کنم.

پاسخ‌ها 1

Vahid 10 سال پیش

ضمن تشکر از 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();
}
}
}

نظرات

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

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