hojjatborohan 56 ارسال شده در 23 مرداد، ۱۳۹۶ اشتراک گذاری ارسال شده در 23 مرداد، ۱۳۹۶ سلام دوستان میخوام ببینم میشه با کد نویسی بشه با برنامه تایین کرد توی تنظیمات گوشی الویت ارسال با کدوم سیم کارت باشه مثلا انتخاب کنم الویت ارسال با سیم 1 باشه یا 2 با کتابخانه ی اقای شاهپیری نمیشه تست کردم لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,579 ارسال شده در 23 مرداد، ۱۳۹۶ اشتراک گذاری ارسال شده در 23 مرداد، ۱۳۹۶ همچین کاری به هیچ وجه امکانپذیر نیست که شما بخواین سیمکارت پیشفزض رو تغییر بدین. چون کلاس telephony فقط متد getSmsDefaultSim واسه این کار باید یه متد مثلا به نام setSmsDefaultSim وجود داشته باشه که نداره اصلا. تو بعضی از گوشیها میشه موقه ارسال پیام یا تماس تعیین کنی که با کدوم سیم این کار انجام بشه که البته رو همه ی دیوایسا امکان پذیر نیست. کتابخونه هم دقیقا همین کارو میکنه و اگه با اون کتابخونه نتونستین مطمئن باشین دیگه نمیتونین. چون همه ی راه های ممکن تا حالا رو من توش اضافه کردم. موفق باشید لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
hojjatborohan 56 ارسال شده در 24 مرداد، ۱۳۹۶ سازنده اشتراک گذاری ارسال شده در 24 مرداد، ۱۳۹۶ اقای شاهپیری لطفا به این ادرس یه سر بزنید ببینید میشه واسه بیسیک کاری کرد که بشه با سیم 1یا دو پیامک ارسال کرد android - How to send a SMS using SMSmanager in Dual SIM mobile? - Stack Overflow لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,579 ارسال شده در 24 مرداد، ۱۳۹۶ اشتراک گذاری ارسال شده در 24 مرداد، ۱۳۹۶ دوست عزیز متدی که من برای ارسال پیامک تو کتابخونه گذاشتم خیلی کامل تر از این لینکه. متدی که تو لینکه. public static boolean sendSMS(Context ctx, int simID, String toNum, String centerNum, String smsText, PendingIntent sentIntent, PendingIntent deliveryIntent) { String name; try { if (simID == 0) { name = "isms"; // for model : "Philips T939" name = "isms0" } else if (simID == 1) { name = "isms2"; } else { throw new Exception("can not get service which for sim '" + simID + "', only 0,1 accepted as values"); } Method method = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", String.class); method.setAccessible(true); Object param = method.invoke(null, name); method = Class.forName("com.android.internal.telephony.ISms$Stub").getDeclaredMethod("asInterface", IBinder.class); method.setAccessible(true); Object stubObj = method.invoke(null, param); if (Build.VERSION.SDK_INT < 18) { method = stubObj.getClass().getMethod("sendText", String.class, String.class, String.class, PendingIntent.class, PendingIntent.class); method.invoke(stubObj, toNum, centerNum, smsText, sentIntent, deliveryIntent); } else { method = stubObj.getClass().getMethod("sendText", String.class, String.class, String.class, String.class, PendingIntent.class, PendingIntent.class); method.invoke(stubObj, ctx.getPackageName(), toNum, centerNum, smsText, sentIntent, deliveryIntent); } return true; } catch (Exception e) { Log.e("apipas", "ClassNotFoundException:" + e.getMessage()); } return false; } متدی که من توی کتابخونه گذاشتم. public static void sendMessage(Context context, String to, String text, SmsSendCallback ssc, int timeout, int cardIndex) throws RuntimeException { boolean isDualMode = TelephoneMgr.isDualMode(); String name = null; String model = Build.MODEL; if (cardIndex == 0) { if ("Philips T939".equals(model)) { name = "isms0"; } else { name = "isms"; } } else if (cardIndex == 1) { if (!isDualMode) { return; } if ("Philips T939".equals(model)) { name = "isms1"; } else { name = "isms2"; } } else { throw new IllegalArgumentException("cardIndex can only be 0 or 1"); } sendMessageToken += 1; Intent sentIntent = new Intent(SMS_SENT_ACTION); sentIntent.putExtra("SMS_TOKEN", sendMessageToken); sentIntent.putExtra("SMS_TO", to); sentIntent.putExtra("SMS_TEXT", text); PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 1073741824); if (ssc != null) { ssc.setToken(sendMessageToken); ssc.setAutoUnregisterActions(new int[1]); ssc.registerMe(timeout); } try { if (isDualMode) { try { Method method = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", new Class[]{String.class}); method.setAccessible(true); Object param = method.invoke(null, new Object[]{name}); if (param == null) { throw new RuntimeException("can not get service which is named '" + name + "'"); } method = Class.forName("com.android.internal.telephony.ISms$Stub").getDeclaredMethod("asInterface", new Class[]{IBinder.class}); method.setAccessible(true); Object stubObj = method.invoke(null, new Object[]{param}); method = stubObj.getClass().getMethod("sendText", new Class[]{String.class, String.class, String.class, PendingIntent.class, PendingIntent.class}); method.invoke(stubObj, new Object[]{to, null, text, sentPI, null}); } catch (Exception e) { e.printStackTrace();; } } else { SmsManager.getDefault().sendTextMessage(to, null, text, sentPI, null); } } catch (RuntimeException e) { if (ssc != null) { ssc.unregisterMe(); } e.printStackTrace(); } } این اگه کار نکنه واستون دیگه بعید میدونم چیز دیگه ای کار کنه. حالا ما بازم پیگیری میکنیم. چیزی دستگیرم شد میزارم استفاده کنن دوستان. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
hojjatborohan 56
سلام دوستان میخوام ببینم میشه با کد نویسی بشه با برنامه تایین کرد توی تنظیمات گوشی الویت ارسال با کدوم سیم کارت باشه مثلا انتخاب کنم الویت ارسال با سیم 1 باشه یا 2 با کتابخانه ی اقای شاهپیری نمیشه تست کردم
لینک ارسال
به اشتراک گذاری در سایت های دیگر
3 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.