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

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

एंड्रॉइड डिवाइस का सिक्योर आईडी (Android ID) प्राप्त करना

यह उदाहरण दर्शाता है कि Settings.Secure.ANDROID_ID का उपयोग करके डिवाइस का यूनिक आइडेंटिफायर कैसे प्राप्त करें, रनटाइम परमिशन के साथ।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 2: लेआउट फ़ाइल

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="20sp"
        android:gravity="center"
        android:padding="16dp" />

</LinearLayout>

चरण 3: MainActivity.java

package com.example.myapplication;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final int PERMISSION_REQUEST_READ_PHONE_STATE = 101;
    private TextView textView;

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text);
        
        // READ_PHONE_STATE परमिशन चेक करें (Android 6.0+)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) 
                    != PackageManager.PERMISSION_GRANTED) {
                // परमिशन रिक्वेस्ट करें
                ActivityCompat.requestPermissions(this, 
                    new String[]{Manifest.permission.READ_PHONE_STATE}, 
                    PERMISSION_REQUEST_READ_PHONE_STATE);
            } else {
                // परमिशन पहले से ग्रांटेड
                showAndroidId();
            }
        } else {
            // Android 6.0 से नीचे - इंस्टॉल टाइम परमिशन
            showAndroidId();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
            @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        
        if (requestCode == PERMISSION_REQUEST_READ_PHONE_STATE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                showAndroidId();
            } else {
                textView.setText("परमिशन अस्वीकृत - Android ID नहीं दिखा सकते");
                Toast.makeText(this, "READ_PHONE_STATE परमिशन आवश्यक है", Toast.LENGTH_LONG).show();
            }
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        // रिज्यूम पर भी चेक करें (यूजर सेटिंग्स से परमिशन दे सकता है)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) 
                    == PackageManager.PERMISSION_GRANTED) {
                showAndroidId();
            }
        }
    }

    private void showAndroidId() {
        String androidId = Settings.Secure.getString(
            getContentResolver(), 
            Settings.Secure.ANDROID_ID
        );
        
        if (androidId != null) {
            textView.setText("Android ID (सिक्योर):\n" + androidId);
        } else {
            textView.setText("Android ID उपलब्ध नहीं");
        }
    }
}

चरण 4: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <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/AppTheme">
        
        <activity android:name=".MainActivity">
            <intent-filter>
                
                
            </intent-filter>
        </activity>
    </application>
</manifest>

Android ID के बारे में महत्वपूर्ण जानकारी

⚠️ चेतावनी और सर्वोत्तम अभ्यास

  • Android 8.0+: बिना READ_PHONE_STATE परमिशन के null लौटाता है
  • फैक्ट्री रीसेट: ID बदल जाता है
  • अनइंस्टॉल/रीइंस्टॉल: समान ऐप साइनिंग की से ID समान रहता है
  • प्राइवेसी: यूजर ट्रैकिंग के लिए विज्ञापन ID (AdvertisingIdClient) बेहतर है
  • यूनिक डिवाइस आईडी के लिए: एकाधिक स्रोतों को मिलाएं या Firebase Instance ID उपयोग करें

विज्ञापन ID (बेहतर विकल्प ट्रैकिंग के लिए)

// build.gradle
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'

// कोड में
AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context);
String advertisingId = adInfo.getId();
boolean limitAdTracking = adInfo.isLimitAdTrackingEnabled();

ऐप चलाएं

ऐप लॉन्च होगा, परमिशन मांगेगा (यदि आवश्यक), फिर 16-कैरेक्टर का Android ID दिखाएगा।

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

  1. Android में बटन क्लिक पर WiFi प्रोग्रामेटिकली ऑन/ऑफ कैसे करें? Android में बटन क्लिक पर WiFi प्रोग्रामेटिकली ऑन/ऑफ कैसे करें?

    Android में WifiManager से WiFi टॉगल करना (बटन ऑनक्लिक) दो बटनों (On/Off) का उपयोग करके WiFi चालू/बंद करने का सरल उदाहरण। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project। चरण 2: लेआउट में दो बटन res/layout/activity_main.xml: <?xml version=1.0 encoding=utf-8?> <LinearLayou

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

    एंड्रॉइड में डिवाइस ID (Android ID) प्राप्त करना और स्टोर करना एंड्रॉइड प्रत्येक डिवाइस के लिए एक यूनिक 64-बिट हेक्साडेसिमल स्ट्रिंग जेनरेट करता है जिसे **Android ID** (SSAID) कहते हैं। यह डिवाइस की पहली बूट पर बनता है और फैक्ट्री रीसेट तक समान रहता है। ध्यान दें: Android 8.0 (API 26) से प्रत्येक ऐप

  1. एंड्रॉइड में प्रोग्रामेटिक रूप से डिवाइस का IMEI/ESN नंबर कैसे प्राप्त करें? एंड्रॉइड में प्रोग्रामेटिक रूप से डिवाइस का IMEI/ESN नंबर कैसे प्राप्त करें?

    READ_PHONE_STATE परमिशन के साथ IMEI नंबर प्राप्त करें यह उदाहरण दर्शाता है कि TelephonyManager का उपयोग करके डिवाइस का IMEI नंबर कैसे प्राप्त करें और रनटाइम परमिशन कैसे संभालें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में बटन और TextView res/layout/acti

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
विशेषताविवरण
यूनिकनेसप्रति डिवाइस, प्रति यूजर, प्रति ऐप साइनिंग की
स्थायित्वफैक्ट्री रीसेट तक समान रहता है
परमिशनAndroid 8.0+ (API 26): READ_PHONE_STATE आवश्यक
फॉर्मेट64-बिट हेक्साडेसिमल स्ट्रिंग (16 कैरेक्टर)