2010-12-09 16 views
24

डिवाइस डिवाइस पहचानकर्ता मैं एमुलेटर में एक ऐप में परीक्षण करना चाहता हूं जो डिवाइस पहचानकर्ता (ANDROID_ID) पर निर्भर करता है।एंड्रॉइड एमुलेटर

मैं वर्तमान में निम्न कोड के साथ उपकरण पहचानकर्ता प्राप्त:

final String deviceID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); 

जब मैं एक एमुलेटर यह रिटर्न null, जो मुझे समस्याओं के सभी प्रकार देता में इस चलाते हैं। ऐसा लगता है कि उच्च एंड्रॉइड संस्करण यह कुछ देता है।

क्या एंड्रॉइड एमुलेटर में डिवाइस पहचानकर्ता प्राप्त करने का कोई तरीका है? क्या मैं डिवाइस आईडी को गलत तरीके से प्राप्त कर रहा हूं?

शायद कंसोल के माध्यम से एमुलेटर के डिवाइस पहचानकर्ता को सेट करना संभव है?

+1

इसके अलावा, एमुलेटर के लिए डिवाइस आईडी सभी '0' के – Falmarri

+0

मेरे Android 4.3 x86 एमुलेटर अब रिटर्न हो जाएगा एक ANDROID_ID (287a676592dc7b0d)। –

उत्तर

39

एमुलेटर में, IMEI और IMSI के मूल्यों hardcoded हैं:

2325  { "+CIMI", OPERATOR_HOME_MCCMNC "000000000", NULL }, /* request internation subscriber identification number */ 
2326  { "+CGSN", "000000000000000", NULL }, /* request model version */ 

इसलिए, आप हमेशा null मिल जाएगा।

यदि आप अभी भी अपने परीक्षण के लिए इन आईडी नंबरों का उपयोग करना चाहते हैं और आप एमुलेटर और वास्तविक डिवाइस के लिए एक ही कोड रखना चाहते हैं, तो आपको इसे किसी भी तरह से एमुलेटर में बदलना होगा।

वहाँ कम से कम दो तरीके इसे कैसे करना है: कोड में मान

  1. बदलें और एमुलेटर के लिए कोड पुनः संकलित करें। हालांकि, यह बहुत जटिल और समय लेने वाला हो सकता है ... :-)

  2. "हैक" एमुलेटर बाइनरी (क्योंकि यह न तो संकुचित या एन्क्रिप्टेड है - आप इसे कर सकते हैं!) और तारों को संशोधित करें (दाएं जगह) ठीक है।

यहाँ यह कैसे करना है:

  • बैकअप एमुलेटर बाइनरी (रोल बैक करना बाद में!)। विंडोज़ में, बाइनरी आपके एंड्रॉइड "\ tools" फ़ोल्डर में स्थित "emulator.exe" नाम के नीचे पाई जा सकती है।

  • अपने पसंदीदा हेक्स संपादक

  • + CGSN स्ट्रिंग एक अशक्त बाइट के बाद के लिए खोज के साथ द्विआधारी खोलने (यह IMEI नंबर 15 अंकों द्वारा पालन किया जाना चाहिए - नीचे देखें Printscreen)

alt text

  • संपादित संख्या (कार हो अंकों की मूल संख्या को बदलने के लिए तैयार नहीं)

  • और फ़ाइल को सहेजें!

  • और शायद अपनी आईडी के लिए IMEI का उपयोग करने के लिए अपना कोड बदलें/समायोजित करें (Falmari अंक के रूप में), या कुछ अन्य मानों को बदलने के लिए इस चाल का उपयोग करें।

+0

मुझे लगता है कि अब और काम नहीं करता है। मुझे emulator.exe में "+ CGSN" या "+ CIMI" मान नहीं मिल रहा है। – lamwaiman1988

+2

यह अभी भी काम करता है! यदि आप इंटेल प्लेटफ़ॉर्म का उपयोग कर रहे हैं तो आपको केवल 'emulator-arm.exe' (या' emulator-x86.exe' 'देखना होगा)। –

+0

@StanislavK यह काम नहीं कर रहा है – Abhishek

2

जैसा कि फल्मररी कहते हैं, डिवाइस आईडी एमुलेटर में 0 होगा। पैरामीटर के संयोजन के आधार पर एक अद्वितीय डिवाइस आईडी उत्पन्न करने के लिए मैं इस विधि का उपयोग करता हूं (ऐसा लगता है कि मेरे लिए यह काम करता है हालांकि मैंने इसे बड़े पैमाने पर परीक्षण नहीं किया है - एम्यूलेटर और एचटीसी डिजायर) - यह मेरी विधि नहीं है (मैं नहीं कर सकता याद रखें कि मैंने इसे कब खोला - लेकिन एट्रिब्यूशन जहां यह देय है)

/* 
* Creates a UUID specific to the device. There are possibly some instances where this does 
* not work e.g. in the emulator or if there is no SIM in the phone. 
*/ 
public static void setDeviceUUID(Context context) 
{ 
    final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 

    final String tmDevice, tmSerial, androidId; 
    tmDevice = "" + tm.getDeviceId(); 
    tmSerial = "" + tm.getSimSerialNumber(); 
    androidId = "" + Secure.getString(context.getContentResolver(), Secure.ANDROID_ID); 

    deviceMobileNo = tm.getLine1Number(); 

    UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode()); 
    deviceUUID = deviceUuid.toString();  
} 

आशा है कि इससे मदद मिलती है।

0

वैकल्पिक विकल्प में डालने के लिए एमुलेटर बाइनरी को हैक करना ठीक है। हालांकि, इसे दशमलव अंक से शुरू होना चाहिए क्योंकि संदर्भ-ril.c में, यह मान पढ़ने के लिए at_send_command_numeric() पर कॉल करता है। मुझे विश्वास है कि MEID तारों का समर्थन करने के लिए at_send_command_singleline() में बदलना होगा (जो आम तौर पर 'ए' से शुरू होने वाले 14 हेक्टेयर अंक होते हैं)। जब तक आप वास्तव में चालाक न हों और बाइनरी में फ़ंक्शन पतों को ढूंढ और स्वैप कर सकें, तो आपको कुछ फ़ोनों के समान मूल्य का उपयोग करने के लिए इसे पैच करने के बाद स्रोत से निर्माण करना होगा।

2

आप में गैर-शून्य एमुलेटर UUID चाहते हैं, तो इस तरह एमुलेटर शुरू:

emulator -avd jbx86 -prop emu.uuid=5ec33f90-a471-11e2-9e96-0800200c9a66 
+1

यह मेरे लिए कुछ भी नहीं करता है। – jab

संबंधित मुद्दे