بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
ارسال اس ام اس در pdu mood (مشکل حل شد)
سلام. می خوام یه اس ام اس pdu mood ارسال کنم.
با سرچ هایی که کردم برای ارسال اس ام اس به قطعه کد زیر رسیدم (hacking android) !
byte[] bb = new byte[1]; Method m2 = SmsManager.class.getDeclaredMethod( "sendRawPdu", bb.getClass(),
bb.getClass(), PendingIntent.class, PendingIntent.class); m2.setAccessible(true); SmsMessage.SubmitPdu pdus = SmsMessage.getSubmitPdu( null, PhoneNumber,message,false ); /* change class to Class 0 */ size = (int)pdus.encodedMessage[2]; size = (size/2) + (size%2); pdus.encodedMessage[size+5] = 0xF0; /* Invoke */ m2.invoke( sm, pdus.encodedScAddress, pdus.encodedMessage, Null, null );
که تقریبا همه جا از همین کد برای ارسال استفاده میشه.
البته در گیت هاب هم پروژه ای با همین مضمون پیدا کردم. (Zero SMS)
من برای حل این مشکل از SMSManager استفاده کردم که جز توابع تعریف شده گوگل هست ولی متاسفانه در هنگام اجرای برنامه با پیغام خطای NoSuchMethodException مواجهه می شوم.
int size;
try {
SmsManager sms_smg = SmsManager.getDefault();
Log.d(TAG, "Formatting class 0 SMS ...");
byte[] b = new byte[0];
SmsMessage.SubmitPdu pdus = SmsMessage.getSubmitPdu(null, phoneNumber, message,false);
Log.d(TAG,pdus.encodedScAddress.toString());
/* change class to Class 0 */
size = (int)pdus.encodedMessage[2];
size = (size/2) + (size%2);
pdus.encodedMessage[size+5] = (byte)0xF0;
/* send raw pdu */
Log.d(TAG,"Sending SMS via sendRawPdu() ...");
try
{
Method m = SmsManager.class.getDeclaredMethod("sendRawPdu", b.getClass()
, b.getClass(), PendingIntent.class, PendingIntent.class);
m.setAccessible(true);
m.invoke(sms_smg, pdus.encodedScAddress, pdus.encodedMessage, null, null);
Toast.makeText(getBaseContext(), sms_smg.toString(),
Toast.LENGTH_SHORT).show();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d(TAG, "5");
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
می خواستم اگر ممکن باشه راهنماییم کنید.
ارروری که در کنسول نمایش داده می شه NoSuchMethodException:sendrawpdu می باشد !
ممنون.
0
0
امین جان لطفا راهنما و قوانین سایت رو مطالعه کنید و بعد این سوال رو تمیز کنید (12 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
amin
12 سال پیش
0
0
با سلام. مشکل حل شد ! :)
مشکل در ارسال پارامتر ها بود. که با کد زیر حل شد.
Method m = SmsManager.class.getDeclaredMethod("sendRawPdu", b.getClass(), b.getClass(),
PendingIntent.class, PendingIntent.class, Boolean.class, Boolean.class);
m.setAccessible(true);
m.invoke(sms_smg, pdus.encodedScAddress, pdus.encodedMessage, null, null, false, false);
سلام به همه دوستان
کدوم دو روش رو منظورتون هست ؟ pdu mood نسبت به ارسال معمولی اس ام اس ؟
یکی از نمونه های pdu mood ارسال اس ام اس به صورت فلش هست و یا ارسال تنظیمات برای گوشی و ... که در حالت Text mode این امکان رو نداریم.
برای مطالعه بیشتر در رابطه با حل این موضوع می تونید به لینک زیر مراجعه کنید: لینک (12 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .