एंड्रॉइड: जांचें कि फोन ड्यूल सिम है या नहीं


113

मंचों पर काफी शोध के बाद, अब मुझे पता है कि दोहरे सिम फोन (निर्माता से संपर्क करने के अलावा) में दोनों सिम कार्ड के लिए IMSI या सिम सीरियल नंबर खोजने का कोई तरीका नहीं है। अब मेरा बदला हुआ प्रश्न यह है कि क्या हम यह पता लगा सकते हैं कि फोन में दो सिम हैं? मेरा मानना ​​है कि इसका पता कुछ बुद्धिमत्ता से लगाया जा सकता है। कुछ तरीके मैं सोच सकता हूँ:

  1. एक USSD कोड डायल करना और IMEI नंबर के लिए लॉग्स को ट्रेस करना (मैंने भारत में * 139 # के साथ यह कोशिश की। यह काम किया।) इससे मुझे उस सिम के लिए IMEI नंबर मिलेगा जिससे मैंने USSD कोड डायल किया था। (यह माना जाता है कि फोन Android दिशानिर्देशों का पालन करता है और दो IMEI नंबर हैं।)

  2. सिम के लिए सिम सीरियल नंबर और / या IMSI स्टोर करना। और किसी भी अन्य आईएमएसआई / सीरियल नंबर का पता लगाने के बाद भी अगर फोन को कुछ लॉग्स को ट्रेस करके या कुछ ब्रॉडकास्ट इवेंट हैंडलिंग के द्वारा फोन को रिबूट नहीं किया गया (यानी सिम स्विच किया गया था)।

  3. * 06 # डायल करके आपको दोनों IMEI नंबर देखने को मिलेंगे। किसी तरह से, उन दो नंबरों को प्राप्त करें। (स्क्रीन कैप्चरिंग और टेक्स्ट के लिए इमेज पार्सिंग जैसा कुछ।)

यदि कोई कुछ अन्य तरीकों के बारे में सोच सकता है, तो वे सबसे अधिक स्वागत करते हैं। मैं वास्तव में इस बारे में किसी भी तरह की मदद की सराहना करूंगा। इसके अलावा, अगर किसी को किसी भी निर्माता एपीआई या उनसे संपर्क करने के लिए लिंक के बारे में कोई जानकारी है, तो कृपया समुदाय के लोगों के साथ साझा करें।


हाय राजकिरण, अंत में मुझे इसका हल मिल गया जो मेरे लिए ठीक है। आशा है कि यह उन सभी के लिए उपयोगी होना चाहिए जो मोबाइल एप्लिकेशन में द्वंद्व सिम संभालना चाहते हैं। द्वंद्वयुद्ध सिम हैंडल एपीआई प्रलेखित नहीं है। कृपया मेरे उत्तर की जाँच करें कि यह मेरे लिए ठीक है। stackoverflow.com/questions/17618651/…
जेबसुथान

1
धन्यवाद .. लेकिन आपका जवाब मेरे सवाल का जवाब नहीं देता। मैं दूसरी सिम और IMEI के बारे में सभी विवरण चाहता हूं। @ पाइपर पाइपर का जवाब मुझे सब कुछ पाने में मदद करता है।
राजकिरण

@ राजकिरण पाइडर पाइपर के जवाब ने वास्तव में आपकी मदद की? मैंने उसका कोड m samsung galaxy y duos में चेक किया है, लेकिन इसका काम नहीं कर रहा है।
नीतीश पटेल

@nitishpatel: हाँ निश्चित रूप से इससे मदद मिली। दुर्भाग्य से मेरे पास जाँच करने के लिए Y Duos नहीं है। लेकिन मेरा मानना ​​है कि सैमसंग एंड्रॉइड वर्जन 4.0 पर दोहरी सिम से निपटने के लिए अलग तंत्र का उपयोग करता है। चितकबरा पीपर उत्तर 4.0 आगे उपकरणों में मदद करता है। बाकी के लिए, आपको प्रतिबिंब का उपयोग करके थोड़ा और खुदाई करने की आवश्यकता होगी।
राजकिरण

नमस्ते, मुझे एक समाधान मिल गया ... कृपया कोड stackoverflow.com/a/32304799/3131373 की जांच करें यह विभिन्न फोन पर परीक्षण किया गया है
user3131373

जवाबों:


184

अपडेट 23 मार्च 15:

आधिकारिक मल्टीपल सिम एपीआई अब एंड्रॉइड 5.1 पर से उपलब्ध है

अन्य संभावित विकल्प:

आप दोनों IMEI नंबर प्राप्त करने के लिए जावा प्रतिबिंब का उपयोग कर सकते हैं ।

इन IMEI नंबरों का उपयोग करके आप जांच सकते हैं कि फोन एक डीयूअल सिम है या नहीं।

निम्नलिखित गतिविधि आज़माएं:

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TelephonyInfo telephonyInfo = TelephonyInfo.getInstance(this);

        String imeiSIM1 = telephonyInfo.getImsiSIM1();
        String imeiSIM2 = telephonyInfo.getImsiSIM2();

        boolean isSIM1Ready = telephonyInfo.isSIM1Ready();
        boolean isSIM2Ready = telephonyInfo.isSIM2Ready();

        boolean isDualSIM = telephonyInfo.isDualSIM();

        TextView tv = (TextView) findViewById(R.id.tv);
        tv.setText(" IME1 : " + imeiSIM1 + "\n" +
                " IME2 : " + imeiSIM2 + "\n" +
                " IS DUAL SIM : " + isDualSIM + "\n" +
                " IS SIM1 READY : " + isSIM1Ready + "\n" +
                " IS SIM2 READY : " + isSIM2Ready + "\n");
    }
}

और यहाँ है TelephonyInfo.java:

import java.lang.reflect.Method;

import android.content.Context;
import android.telephony.TelephonyManager;

public final class TelephonyInfo {

    private static TelephonyInfo telephonyInfo;
    private String imeiSIM1;
    private String imeiSIM2;
    private boolean isSIM1Ready;
    private boolean isSIM2Ready;

    public String getImsiSIM1() {
        return imeiSIM1;
    }

    /*public static void setImsiSIM1(String imeiSIM1) {
        TelephonyInfo.imeiSIM1 = imeiSIM1;
    }*/

    public String getImsiSIM2() {
        return imeiSIM2;
    }

    /*public static void setImsiSIM2(String imeiSIM2) {
        TelephonyInfo.imeiSIM2 = imeiSIM2;
    }*/

    public boolean isSIM1Ready() {
        return isSIM1Ready;
    }

    /*public static void setSIM1Ready(boolean isSIM1Ready) {
        TelephonyInfo.isSIM1Ready = isSIM1Ready;
    }*/

    public boolean isSIM2Ready() {
        return isSIM2Ready;
    }

    /*public static void setSIM2Ready(boolean isSIM2Ready) {
        TelephonyInfo.isSIM2Ready = isSIM2Ready;
    }*/

    public boolean isDualSIM() {
        return imeiSIM2 != null;
    }

    private TelephonyInfo() {
    }

    public static TelephonyInfo getInstance(Context context){

        if(telephonyInfo == null) {

            telephonyInfo = new TelephonyInfo();

            TelephonyManager telephonyManager = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE));

            telephonyInfo.imeiSIM1 = telephonyManager.getDeviceId();;
            telephonyInfo.imeiSIM2 = null;

            try {
                telephonyInfo.imeiSIM1 = getDeviceIdBySlot(context, "getDeviceIdGemini", 0);
                telephonyInfo.imeiSIM2 = getDeviceIdBySlot(context, "getDeviceIdGemini", 1);
            } catch (GeminiMethodNotFoundException e) {
                e.printStackTrace();

                try {
                    telephonyInfo.imeiSIM1 = getDeviceIdBySlot(context, "getDeviceId", 0);
                    telephonyInfo.imeiSIM2 = getDeviceIdBySlot(context, "getDeviceId", 1);
                } catch (GeminiMethodNotFoundException e1) {
                    //Call here for next manufacturer's predicted method name if you wish
                    e1.printStackTrace();
                }
            }

            telephonyInfo.isSIM1Ready = telephonyManager.getSimState() == TelephonyManager.SIM_STATE_READY;
            telephonyInfo.isSIM2Ready = false;

            try {
                telephonyInfo.isSIM1Ready = getSIMStateBySlot(context, "getSimStateGemini", 0);
                telephonyInfo.isSIM2Ready = getSIMStateBySlot(context, "getSimStateGemini", 1);
            } catch (GeminiMethodNotFoundException e) {

                e.printStackTrace();

                try {
                    telephonyInfo.isSIM1Ready = getSIMStateBySlot(context, "getSimState", 0);
                    telephonyInfo.isSIM2Ready = getSIMStateBySlot(context, "getSimState", 1);
                } catch (GeminiMethodNotFoundException e1) {
                    //Call here for next manufacturer's predicted method name if you wish
                    e1.printStackTrace();
                }
            }
        }

        return telephonyInfo;
    }

    private static String getDeviceIdBySlot(Context context, String predictedMethodName, int slotID) throws GeminiMethodNotFoundException {

        String imei = null;

        TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        try{

            Class<?> telephonyClass = Class.forName(telephony.getClass().getName());

            Class<?>[] parameter = new Class[1];
            parameter[0] = int.class;
            Method getSimID = telephonyClass.getMethod(predictedMethodName, parameter);

            Object[] obParameter = new Object[1];
            obParameter[0] = slotID;
            Object ob_phone = getSimID.invoke(telephony, obParameter);

            if(ob_phone != null){
                imei = ob_phone.toString();

            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new GeminiMethodNotFoundException(predictedMethodName);
        }

        return imei;
    }

    private static  boolean getSIMStateBySlot(Context context, String predictedMethodName, int slotID) throws GeminiMethodNotFoundException {

        boolean isReady = false;

        TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        try{

            Class<?> telephonyClass = Class.forName(telephony.getClass().getName());

            Class<?>[] parameter = new Class[1];
            parameter[0] = int.class;
            Method getSimStateGemini = telephonyClass.getMethod(predictedMethodName, parameter);

            Object[] obParameter = new Object[1];
            obParameter[0] = slotID;
            Object ob_phone = getSimStateGemini.invoke(telephony, obParameter);

            if(ob_phone != null){
                int simState = Integer.parseInt(ob_phone.toString());
                if(simState == TelephonyManager.SIM_STATE_READY){
                    isReady = true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new GeminiMethodNotFoundException(predictedMethodName);
        }

        return isReady;
    }


    private static class GeminiMethodNotFoundException extends Exception {

        private static final long serialVersionUID = -996812356902545308L;

        public GeminiMethodNotFoundException(String info) {
            super(info);
        }
    }
}

संपादित करें:

अन्य सिम स्लॉट के विवरण के लिए "getDeviceIdGemini" जैसी विधियों का उपयोग करने से यह भविष्यवाणी होती है कि विधि मौजूद है।

यदि उस विधि का नाम डिवाइस निर्माता द्वारा दिए गए एक के साथ मेल नहीं खाता है तो यह काम नहीं करेगा। आपको उन उपकरणों के लिए संबंधित विधि नाम ढूंढना होगा।

अन्य निर्माताओं के लिए विधि नाम ढूँढना निम्नानुसार जावा प्रतिबिंब का उपयोग करके किया जा सकता है:

public static void printTelephonyManagerMethodNamesForThisDevice(Context context) {

    TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    Class<?> telephonyClass;
    try {
        telephonyClass = Class.forName(telephony.getClass().getName());
        Method[] methods = telephonyClass.getMethods();
        for (int idx = 0; idx < methods.length; idx++) {

            System.out.println("\n" + methods[idx] + " declared by " + methods[idx].getDeclaringClass());
        }
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
} 

संपादित करें:

जैसा कि सीता ने अपनी टिप्पणी में बताया है:

telephonyInfo.imeiSIM1 = getDeviceIdBySlot(context, "getDeviceIdDs", 0);
telephonyInfo.imeiSIM2 = getDeviceIdBySlot(context, "getDeviceIdDs", 1); 

यह उसके लिए काम कर रहा है। वह सैमसंग डुओस डिवाइस में दोनों सिम के लिए दो आईएमईआई नंबर प्राप्त करने में सफल रहा।

जोड़ना <uses-permission android:name="android.permission.READ_PHONE_STATE" />

संपादित करें 2:

डेटा प्राप्त करने के लिए उपयोग की जाने वाली विधि लेनोवो A319 और उस निर्माण द्वारा अन्य फोन के लिए है (क्रेडिट माहेर अबुथ्रा ):

telephonyInfo.imeiSIM1 = getDeviceIdBySlot(context, "getSimSerialNumberGemini", 0); 
telephonyInfo.imeiSIM2 = getDeviceIdBySlot(context, "getSimSerialNumberGemini", 1); 

4
ठंडा! यह मेरे लिए Karbonn पर "getDeviceId" के साथ काम किया। सैमसंग के तरीकों की खोज करेंगे और जब मेरे पास होंगे, तब यहां अपडेट करेंगे। धन्यवाद दोस्त। कुडोस।
राजकिरण

1
हाँ। यहां तक ​​कि मैंने ऐसा किया भी। पाया कि सैमसंग com.android.internal.telephony.RILConstants$SimCardIDआंतरिक रूप से उपयोग करता है । यहां तक ​​कि तरीकों और समान चर के नामों के समान हस्ताक्षर के साथ उस वर्ग को बनाने की कोशिश की। लेकिन किस्मत नहीं। स्रोत कोड प्राप्त करने का प्रयास करेगा और जांचने का प्रयास करेगा। धन्यवाद।
राजकिरण

4
मैं telephonyInfo.imeiSIM1 = getDeviceIdBySlot (संदर्भ, "getDeviceIdDs", 0) का उपयोग करता हूं; telephonyInfo.imeiSIM2 = getDeviceIdBySlot (संदर्भ, "getDeviceIdDs", 1); यह मेरे लिए काम कर रहा है। मैं दोनों सिम के लिए दो IMEI नंबर पाने में सफल रहा।
सीता

1
मैं सिम 2 का फोन नंबर कैसे प्राप्त कर सकता हूं? मैं telephony.getLine1Number () पद्धति का उपयोग करके SIM1 नंबर प्राप्त कर रहा हूं, विधि I की सूची में getLine2Number () या getLine1Number (int) जैसी विधि पा सकते हैं
DCoder

4
deviceId IMEI नहीं IMSI है, है ना?
फालको

5

मेरे पास एंड्रॉइड 4.4.4 के साथ एक सैमसंग डुओस डिवाइस है और स्वीकार किए गए उत्तर में सीता द्वारा सुझाई गई विधि (यानी कॉल getDeviceIdDs) मेरे लिए काम नहीं करती है, क्योंकि विधि मौजूद नहीं है। नीचे दी गई जानकारी के अनुसार, मुझे कॉल विधि "getDefault (int slotID)" द्वारा आवश्यक सभी जानकारी को पुनर्प्राप्त करने में सक्षम था, जैसा कि नीचे दिखाया गया है:

public static void samsungTwoSims(Context context) {
    TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

    try{

        Class<?> telephonyClass = Class.forName(telephony.getClass().getName());

        Class<?>[] parameter = new Class[1];
        parameter[0] = int.class;
        Method getFirstMethod = telephonyClass.getMethod("getDefault", parameter);

        Log.d(TAG, getFirstMethod.toString());

        Object[] obParameter = new Object[1];
        obParameter[0] = 0;
        TelephonyManager first = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

        Log.d(TAG, "Device Id: " + first.getDeviceId() + ", device status: " + first.getSimState() + ", operator: " + first.getNetworkOperator() + "/" + first.getNetworkOperatorName());

        obParameter[0] = 1;
        TelephonyManager second = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

        Log.d(TAG, "Device Id: " + second.getDeviceId() + ", device status: " + second.getSimState()+ ", operator: " + second.getNetworkOperator() + "/" + second.getNetworkOperatorName());
    } catch (Exception e) {
        e.printStackTrace();
    }   
}

इसके अलावा, मैंने इस जानकारी को पुनर्प्राप्त करने के तरीकों के लिए पुनरावृत्तीय परीक्षणों को कोड को फिर से लिखा है ताकि यह कोशिश / पकड़ने के अनुक्रम के बजाय विधि नामों की एक सरणी का उपयोग करे। उदाहरण के लिए, यह निर्धारित करने के लिए कि हमारे पास दो सक्रिय सिम हैं जो हम कर सकते हैं:

private static String[] simStatusMethodNames = {"getSimStateGemini", "getSimState"};


public static boolean hasTwoActiveSims(Context context) {
    boolean first = false, second = false;

    for (String methodName: simStatusMethodNames) {
        // try with sim 0 first
        try {
            first = getSIMStateBySlot(context, methodName, 0);
            // no exception thrown, means method exists
            second = getSIMStateBySlot(context, methodName, 1);
           return first && second;
        } catch (GeminiMethodNotFoundException e) {
            // method does not exist, nothing to do but test the next
        }
    }
    return false;
}

इस तरह, यदि किसी उपकरण के लिए एक नया तरीका नाम सुझाया गया है, तो आप बस इसे सरणी में जोड़ सकते हैं और इसे काम करना चाहिए।


4

नेटवर्क ऑपरेटर की जांच करने के तरीके को खोजने के दौरान मैंने कई मूल समाधान खोजे हैं।

API के लिए = = 17:

TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

// Get information about all radio modules on device board
// and check what you need by calling #getCellIdentity.

final List<CellInfo> allCellInfo = manager.getAllCellInfo();
for (CellInfo cellInfo : allCellInfo) {
    if (cellInfo instanceof CellInfoGsm) {
        CellIdentityGsm cellIdentity = ((CellInfoGsm) cellInfo).getCellIdentity();
        //TODO Use cellIdentity to check MCC/MNC code, for instance.
    } else if (cellInfo instanceof CellInfoWcdma) {
        CellIdentityWcdma cellIdentity = ((CellInfoWcdma) cellInfo).getCellIdentity();
    } else if (cellInfo instanceof CellInfoLte) {
        CellIdentityLte cellIdentity = ((CellInfoLte) cellInfo).getCellIdentity();
    } else if (cellInfo instanceof CellInfoCdma) {
        CellIdentityCdma cellIdentity = ((CellInfoCdma) cellInfo).getCellIdentity();
    } 
}

AndroidManifest में अनुमति जोड़ें:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>

नेटवर्क ऑपरेटर पाने के लिए आप mcc और mnc कोड चेक कर सकते हैं:

API के लिए = = 22:

final SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
final List<SubscriptionInfo> activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfoList) {
    final CharSequence carrierName = subscriptionInfo.getCarrierName();
    final CharSequence displayName = subscriptionInfo.getDisplayName();
    final int mcc = subscriptionInfo.getMcc();
    final int mnc = subscriptionInfo.getMnc();
    final String subscriptionInfoNumber = subscriptionInfo.getNumber();
}

एपीआई के लिए = = 23। बस यह देखने के लिए कि फ़ोन ड्यूल / ट्रिपल / कई सिम है:

TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (manager.getPhoneCount() == 2) {
    // Dual sim
}

4

मैं वनप्लस 2 फोन से आईएमईआई दोनों को पढ़ने में सक्षम हूं

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                TelephonyManager manager = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
                Log.i(TAG, "Single or Dual Sim " + manager.getPhoneCount());
                Log.i(TAG, "Default device ID " + manager.getDeviceId());
                Log.i(TAG, "Single 1 " + manager.getDeviceId(0));
                Log.i(TAG, "Single 2 " + manager.getDeviceId(1));
            }

अच्छा है कि यह वन प्लस पर काम करता है। लेकिन आपसे अनुरोध है कि सभी फोन और सभी एंड्रॉइड संस्करणों (शायद) के लिए काम करने वाले उत्तर पोस्ट करें
राजकिरण

1
यह एक आधिकारिक एसडीके है। सभी फोन के लिए काम करना चाहिए। मैंने इसे OnePlus 2
स्वप्निल गोडम्बे

तो @ स्वप्निल का स्वीकृत उत्तर वही बात सही बताता है?
राजकिरण

2

मैं कॉल लॉग्स पर एक नज़र डाल रहा था और मैंने देखा कि मैनेजर की सामग्री में सामान्य क्षेत्रों के अलावा, हमारे पास ड्यूल सिम फोन में एक कॉलम "सिमिड" है (मैंने Xolo A500s Lite पर जांचा), ताकि प्रत्येक कॉल को टैग किया जा सके एक सिम के साथ कॉल लॉग में। यह मान या तो 1 या 2 है, जो शायद SIM1 / SIM2 को दर्शा रहा है।

managedCursor = context.getContentResolver().query(contacts, null, null, null, null);
managedCursor.moveToNext();        
for(int i=0;i<managedCursor.getColumnCount();i++)
{//for dual sim phones
    if(managedCursor.getColumnName(i).toLowerCase().equals("simid"))
        indexSIMID=i;
}

मुझे यह कॉलम सिंगल सिम फोन में नहीं मिला था (मैंने एक्सपीरिया एल पर चेक किया था)।

इसलिए हालांकि मुझे नहीं लगता कि यह दोहरी सिम प्रकृति की जांच करने का एक मूर्ख तरीका है, मैं इसे यहां पोस्ट कर रहा हूं क्योंकि यह किसी के लिए उपयोगी हो सकता है।


आप एक DB पढ़ रहे हैं, कौन सा? कृपया स्पष्ट करें कि आप यहां क्या कर रहे हैं। ("संपर्क" db कहाँ संग्रहीत किया गया है?
not2qubit

1

सुझाव:

आप उपयोग करने का प्रयास कर सकते हैं

ctx.getSystemService("phone_msim")

के बजाय

ctx.getSystemService(Context.TELEPHONY_SERVICE)

यदि आपने पहले ही वैभव के उत्तर की कोशिश की है और telephony.getClass().getMethod()विफल हो गया है, तो ऊपर मेरे क्वालकॉम मोबाइल के लिए क्या काम करता है ।


जब तक उत्तर पूरा नहीं हो जाता, आप अनुपूरक जानकारी के लिए अन्य भाषाओं में वेब पृष्ठों के लिंक पोस्ट कर सकते हैं। meta.stackoverflow.com/questions/271060/…
मच

यह वास्तव में एक उपयोगी लिंक था , इसे हटाने की कोई आवश्यकता नहीं है।
13

0

मैंने सैमसंग S8 पर इन सिस्टम गुणों को पाया है

SystemProperties.getInt("ro.multisim.simslotcount", 1) > 1

इसके अलावा, स्रोत के अनुसार: https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/com/android/internal/telephony/Telephonybperties.java

getprop persist.radio.multisim.configमल्टी सिम पर " dsds" या " dsda" देता है ।

मैंने सैमसंग एस 8 पर इसका परीक्षण किया है और यह काम करता है


कोई बात नहीं। एंड्रॉइड में पहले से ही दोहरी सिम के लिए एपीआई है। developer.android.com/about/versions/android-5.1.html#multisim बाकी सब चीज़ों के लिए, आप ऊपर दिए गए जवाब का उल्लेख कर सकते हैं @ वैभव
राजकिरण

-1

3
हाँ आदमी। मुझे पता है। लेकिन इसीलिए मैं वर्कअराउंड खोजने की कोशिश कर रहा हूं। और कुछ होना ही है। Play Store से USSDDualWidget ऐप आज़माएं। यह वास्तव में दो सिमों के बीच स्विच कर सकता है। यहां तक ​​कि इंजीनियर को कोड रिवर्स करने की कोशिश की, लेकिन कोई भाग्य नहीं।
राजकिरण

क्या यह सभी उपकरणों पर काम करता है या सिर्फ एक सीमित उपसमुच्चय है जो किसी प्रकार के मालिकाना इंटरफ़ेस को उजागर करता है?
गोंजोब्राईंस

2
यह जवाब क्यों दिया गया? यह सही उत्तर है। ^
एन शर्मा

24
कई बार कॉमन्सवेयर ने कहा है कि यह संभव नहीं है जो अन्य डेवलपर्स द्वारा संभव बनाया गया है। तो, यह पसंद नहीं है कि कॉमन्सवेयर जो कहता है वह हमेशा सही होता है :-)
ललित पोपटानी

1
आप सही हो सकते हैं, लेकिन मुझे लगता है कि वह सभी चीजों के लिए काफी विश्वसनीय संसाधन है। इस विशेष मुद्दे के रूप में, निश्चित रूप से, मैंने वही काम किया और दोहरा सिम डेटा प्राप्त करने के लिए प्रतिबिंब का उपयोग किया, लेकिन यह मेरे विशेष उपकरण के लिए था। आज तक, मुझे अभी भी विश्वास नहीं है कि ऐसा करने के बारे में कोई सामान्य तरीका है। यह भी ध्यान दें कि मैंने एक Google डेवलपर के रूप में और न केवल कॉमन्सवेयर को उद्धृत किया।
गोंजोब्रैन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.