एंड्रॉइड में डिवाइस ID (Android ID) प्राप्त करना और स्टोर करना
एंड्रॉइड प्रत्येक डिवाइस के लिए एक यूनिक 64-बिट हेक्साडेसिमल स्ट्रिंग जेनरेट करता है जिसे **Android ID** (SSAID) कहते हैं। यह डिवाइस की पहली बूट पर बनता है और फैक्ट्री रीसेट तक समान रहता है। ध्यान दें: Android 8.0 (API 26) से प्रत्येक ऐप के लिए अलग-अलग **Scoped Android ID** मिलता है।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio → File → New → New Project → "Empty Activity" → Finish।
चरण 2: Layout (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/tvDeviceId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="18sp"
android:textStyle="bold"
android:padding="16dp"
android:text="डिवाइस ID लोड हो रहा है..." />
</RelativeLayout>
चरण 3: MainActivity.java — डिवाइस ID प्राप्त करें और SharedPreferences में स्टोर करें
package com.example.deviceiddemo;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final String PREFS_NAME = "DeviceIdPrefs";
private static final String KEY_DEVICE_ID = "android_id";
private TextView tvDeviceId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvDeviceId = findViewById(R.id.tvDeviceId);
// 1. Android ID प्राप्त करें
String androidId = Settings.Secure.getString(
getContentResolver(),
Settings.Secure.ANDROID_ID
);
// 2. SharedPreferences में स्टोर करें (यदि पहले से नहीं है)
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String storedId = prefs.getString(KEY_DEVICE_ID, null);
if (storedId == null) {
// पहली बार — स्टोर करें
prefs.edit().putString(KEY_DEVICE_ID, androidId).apply();
tvDeviceId.setText("नया डिवाइस ID जनरेट और स्टोर किया गया:\n" + androidId);
} else {
// पहले से स्टोर है
tvDeviceId.setText("स्टोर्ड डिवाइस ID:\n" + storedId +
"\n\nवर्तमान Android ID:\n" + androidId +
(storedId.equals(androidId) ? "\n\n✅ दोनों मेल खाते हैं" : "\n\n⚠️ दोनों अलग हैं (संभावित फैक्ट्री रीसेट या Android 8+ स्कोप्ड ID)"));
}
}
}
चरण 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.deviceiddemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.DeviceIdDemo">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
चलाएं और टेस्ट करें
- ऐप पहली बार चलाएं — "नया डिवाइस ID जनरेट और स्टोर किया गया" दिखेगा।
- ऐप दोबारा खोलें — "स्टोर्ड डिवाइस ID" दिखेगा।
- फैक्ट्री रीसेट के बाद ID बदल जाएगा (Android 7.1 तक)। Android 8.0+ में ऐप रीइंस्टॉल पर भी नया स्कोप्ड ID मिलेगा।
🔐 अन्य पहचानकर्ता और उनके उपयोग
| पहचानकर्ता | API | स्थायित्व | उपयोग केस | नोट |
|---|---|---|---|---|
| Android ID (SSAID) | Settings.Secure.ANDROID_ID | फैक्ट्री रीसेट तक (Android 7.1) ऐप-स्कोप्ड (Android 8+) | एनालिटिक्स, फ्रॉड डिटेक्शन | कोई परमिशन नहीं चाहिए |
| IMEI/MEID | TelephonyManager.getImei() | हार्डवेयर-लेवल,永久 | टेलीकॉम, डिवाइस ट्रैकिंग | READ_PHONE_STATE परमिशन + यूज़र कंसेंट जरूरी |
| Advertising ID (GAID) | AdvertisingIdClient.getAdvertisingIdInfo() | यूज़र रीसेट कर सकता है | विज्ञापन, पर्सनलाइजेशन | Google Play Services जरूरी, यूज़र ऑप्ट-आउट कर सकता है |
| Firebase Installation ID (FID) | FirebaseInstallations.getId() | ऐप इंस्टॉल तक | फायरबेस एनालिटिक्स, FCM | ऐप अनइंस्टॉल पर रीसेट |
| UUID (ऐप-जेनरेटेड) | UUID.randomUUID() + SharedPreferences | ऐप डेटा क्लियर/अनइंस्टॉल तक | ऐप-इंटरनल यूज़र पहचान | पूर्ण नियंत्रण, कोई परमिशन नहीं |
⚠️ बेस्ट प्रैक्टिसेज
- IMEI/सीरियल नंबर न मांगें — Android 10+ में गैर-सिस्टम ऐप्स के लिए प्रतिबंधित।
- Advertising ID विज्ञापन/एनालिटिक्स के लिए पसंदीदा — यूज़र कंट्रोल देता है।
- अपना UUID जनरेट करें अगर केवल अपने ऐप के अंदर यूज़र पहचानना है — सबसे सुरक्षित और नियंत्रणीय।
- डेटा एन्क्रिप्ट करें अगर सेंसिटिव ID स्टोर कर रहे हैं —
EncryptedSharedPreferencesउपयोग करें।
सारांश
Settings.Secure.ANDROID_ID सबसे आसान, परमिशन-फ्री डिवाइस पहचानकर्ता है। इसे SharedPreferences में स्टोर करके बाद में उपयोग कर सकते हैं। Android 8.0+ में यह ऐप-स्कोप्ड हो गया है — ऐप रीइंस्टॉल पर बदल जाता है। स्थायी पहचान के लिए अपना UUID जनरेट करें या Firebase Installation ID उपयोग करें।