رفتن به مطلب
  • 0

انتخاب یک سیم کارت در گوشی های دو سیمکارته


hojjatborohan

سوال

سلام دوستان میخوام ببینم میشه با کد نویسی بشه با برنامه تایین کرد توی تنظیمات گوشی الویت ارسال با کدوم سیم کارت باشه مثلا انتخاب کنم الویت ارسال با سیم 1 باشه یا 2 با کتابخانه ی اقای شاهپیری نمیشه تست کردم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

همچین کاری به هیچ وجه امکانپذیر نیست که شما بخواین سیمکارت پیشفزض رو تغییر بدین. چون کلاس telephony فقط متد getSmsDefaultSim  واسه این کار باید یه متد مثلا به نام setSmsDefaultSim وجود داشته باشه که نداره اصلا.

تو بعضی از گوشیها میشه موقه ارسال پیام یا تماس تعیین کنی که با کدوم سیم این کار انجام بشه که البته رو همه ی دیوایسا امکان پذیر نیست. کتابخونه هم دقیقا همین کارو میکنه و اگه با اون کتابخونه نتونستین مطمئن باشین دیگه نمیتونین. چون همه ی راه های ممکن تا حالا رو من توش اضافه کردم.

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اقای شاهپیری لطفا به این ادرس یه سر بزنید ببینید میشه واسه بیسیک کاری کرد که بشه با سیم 1یا دو پیامک ارسال کرد 

 

android - How to send a SMS using SMSmanager in Dual SIM mobile? - Stack Overflow

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

متدی که تو لینکه.

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();
        }

    }

این اگه کار نکنه واستون دیگه بعید میدونم چیز دیگه ای کار کنه. حالا ما بازم پیگیری میکنیم. چیزی دستگیرم شد میزارم استفاده کنن دوستان.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...