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

एंड्रॉइड में डिफ़ॉल्ट सिम सीरियल नंबर कैसे प्राप्त करें?

एंड्रॉइड में सिम सीरियल नंबर (ICCID) प्राप्त करने का गाइड

यह ट्यूटोरियल दिखाता है कि एंड्रॉइड ऐप में TelephonyManager का उपयोग करके सिम कार्ड का सीरियल नंबर (ICCID) कैसे प्राप्त करें।

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

Android Studio में File → New Project चुनें और प्रोजेक्ट विवरण भरें।

चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)

<?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:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
    <TextView
        android:id="@+id/text"
        android:textSize="30sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

चरण 3: MainActivity कोड (java/MainActivity.java)

package com.example.myapplication;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import static android.Manifest.permission.READ_PHONE_NUMBERS;
import static android.Manifest.permission.READ_PHONE_STATE;
import static android.Manifest.permission.READ_SMS;

public class MainActivity extends AppCompatActivity {
    private static final int PERMISSION_REQUEST_CODE = 100;
    TextView textView;
    TelephonyManager telephonyManager;

    @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);
        telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        if (ActivityCompat.checkSelfPermission(this, READ_SMS) != PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(this, READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(this, READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            
            ActivityCompat.requestPermissions(this, 
                new String[]{READ_SMS, READ_PHONE_NUMBERS, READ_PHONE_STATE}, 
                PERMISSION_REQUEST_CODE);
        } else {
            String simSerial = getSimSerialSafely();
            textView.setText(simSerial);
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.P)
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == PERMISSION_REQUEST_CODE) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) == PackageManager.PERMISSION_GRANTED ||
                ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) == PackageManager.PERMISSION_GRANTED ||
                ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
                String simSerial = getSimSerialSafely();
                textView.setText(simSerial);
            } else {
                textView.setText("परमिशन अस्वीकृत");
            }
        }
    }

    private String getSimSerialSafely() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            // एंड्रॉइड 10+ पर getSimSerialNumber() के लिए विशेष परमिशन चाहिए
            return "एंड्रॉइड 10+ में सिम सीरियल एक्सेस प्रतिबंधित";
        } else {
            return telephonyManager.getSimSerialNumber();
        }
    }
}

चरण 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.READ_PHONE_NUMBERS" />
    <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>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

महत्वपूर्ण जानकारी

  • ICCID सिम कार्ड का यूनिक पहचानकर्ता होता है (आमतौर पर 19-20 अंक)
  • एंड्रॉइड 10+ पर READ_PRIVILEGED_PHONE_STATE परमिशन चाहिए जो सिस्टम ऐप्स को ही मिलती है
  • READ_SMS परमिशन यहां अनावश्यक है
  • डुअल सिम डिवाइस पर यह डिफ़ॉल्ट/सक्रिय सिम का नंबर लौटाता है

ऐप टेस्ट करें

डिवाइस कनेक्ट करें, Run पर क्लिक करें। सिम कार्ड होने पर ICCID दिखेगा, अन्यथा "null" या प्रतिबंध संदेश।

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

    एंड्रॉइड में सिम सर्विस स्टेट (नेटवर्क स्थिति) प्राप्त करना यह ट्यूटोरियल दिखाता है कि TelephonyManager.getServiceState() का उपयोग करके सिम कार्ड की नेटवर्क सर्विस स्थिति कैसे प्राप्त करें। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट (res/layout/activity_ma

  1. Android डिवाइस का सीरियल नंबर कैसे प्राप्त करें? Android डिवाइस का सीरियल नंबर कैसे प्राप्त करें?

    Android डिवाइस का सीरियल नंबर और डिवाइस जानकारी प्राप्त करना यह उदाहरण दर्शाता है कि Android डिवाइस का सीरियल नंबर (`Build.SERIAL`) और टेलीफोनी जानकारी कैसे प्राप्त करें, जिसमें रनटाइम परमिशन हैंडलिंग शामिल है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट फ़

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

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