PDA

View Full Version : اجرای ussd و دریافت پیامک



123qwe
سه شنبه 09 آذر 1395, 12:58 عصر
سلام دوستان
من یه برنامه میخوام بنویسم که یه فایل دارم که داخلش فرضن 100 تا کد ussd هستش میخوام بعد از اجرای هر کد برنامه منتظر دریافت پیامکی که از اپراتور میرسه بمونه و ان پیامک را بخواند و سپس کد ussd بعدی را اجرا کنه و این چرخه انقد ادامه پیدا کنه تا فایل تمام شود

سوال: الان میتونم کد ussd را اجرا کنم و پیامک را بخوانم اما نمیدونم چطوری باید توی برنامه بگم بعد خواندن پیامک کد بعدی را اجرا کن؟ یعنی نمیتونم این 2تا را به هم ربط بدم، لطفا اگر اطلاعاتی دارید واسم توضیح بدید تا متوجه بشم چون مبتدی هستم، با تشکر از شما.

کد ارسال ussd بعد از کلیک روی button و اجرای تابع ussd_run در فایل MainActivity.java

String ussdCode = "*0" + Uri.encode("#");
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussdCode)));



کد خواندن پیامک در فایل manifest
<receiver android:name=".SmsReceiver">
<intent-filter>
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>





کد خواندن پیامک در فایل SmsReceiver.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;


public class SmsReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String messageReceived = "";
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];


for (int i = 0; i < msgs.length; i++)


{
msgs<span style="font-style: italic;"> = SmsMessage.createFromPdu((byte[]) pdus[i]);
messageReceived += msgs[i].getMessageBody().toString();
}
String senderPhoneNumber=msgs[0].getOriginatingAddress ();
if(senderPhoneNumber.equals("+98")) {
//نشان دادن رسیدن مسیج جدید
Toast.makeText(context, messageReceived, Toast.LENGTH_SHORT).show();

// گرفتن شماره تلفن فرستنده
//String senderPhoneNumber=msgs[0].getOriginatingAddress ();
Toast.makeText(context, senderPhoneNumber, Toast.LENGTH_SHORT).show();

}
}
}


}

123qwe
جمعه 12 آذر 1395, 20:03 عصر
سلام
یعنی به غیر از اعضا ، مدیران این بخش هم بلد نیستند که جواب ندادن؟