Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में डिवाइस ID कैसे प्राप्त करें और स्टोर करें?

एंड्रॉइड में डिवाइस 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>

चलाएं और टेस्ट करें

  1. ऐप पहली बार चलाएं — "नया डिवाइस ID जनरेट और स्टोर किया गया" दिखेगा।
  2. ऐप दोबारा खोलें — "स्टोर्ड डिवाइस ID" दिखेगा।
  3. फैक्ट्री रीसेट के बाद ID बदल जाएगा (Android 7.1 तक)। Android 8.0+ में ऐप रीइंस्टॉल पर भी नया स्कोप्ड ID मिलेगा।

🔐 अन्य पहचानकर्ता और उनके उपयोग

पहचानकर्ताAPIस्थायित्वउपयोग केसनोट
Android ID (SSAID)Settings.Secure.ANDROID_IDफैक्ट्री रीसेट तक (Android 7.1)
ऐप-स्कोप्ड (Android 8+)
एनालिटिक्स, फ्रॉड डिटेक्शनकोई परमिशन नहीं चाहिए
IMEI/MEIDTelephonyManager.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 उपयोग करें।

  1. Android में तारीख और समय को फॉर्मेट कैसे करें? Android में तारीख और समय को फॉर्मेट कैसे करें?

    Android में SimpleDateFormat से तारीख और समय फॉर्मेट करना यह उदाहरण दर्शाता है कि Calendar और SimpleDateFormat का उपयोग करके वर्तमान तारीख और समय को कस्टम फॉर्मेट में कैसे प्रदर्शित किया जाए। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट फ़ाइल (res/layout/act

  1. एंड्रॉइड में रिसोर्स ID से रिसोर्स नाम कैसे प्राप्त करें? एंड्रॉइड में रिसोर्स ID से रिसोर्स नाम कैसे प्राप्त करें?

    एंड्रॉइड में रिसोर्स ID से रिसोर्स नाम प्राप्त करना यह उदाहरण दिखाता है कि `getResources().getResourceName()` मेथड का उपयोग करके किसी व्यू की रिसोर्स ID से उसका पूरा नाम (पैकेज:टाइप/नाम) कैसे प्राप्त किया जाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनकर नया प्रोजेक्ट

  1. Android Emulator का IP एड्रेस कैसे प्राप्त करें? Android Emulator का IP एड्रेस कैसे प्राप्त करें?

    WifiManager का उपयोग करके Android एमुलेटर/डिवाइस का स्थानीय IP एड्रेस प्रोग्रामेटिकली प्राप्त करने का तरीका। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=https