x1ongzhu 1 жил өмнө
parent
commit
e4a04859ee

+ 5 - 0
app/src/main/AndroidManifest.xml

@@ -6,6 +6,8 @@
         android:name="android.hardware.telephony"
         android:required="false" />
 
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
@@ -74,6 +76,9 @@
             <intent-filter>
                 <action android:name="android.provider.Telephony.SMS_DELIVER" />
             </intent-filter>
+            <intent-filter>
+                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
+            </intent-filter>
         </receiver>
 
         <receiver

+ 24 - 0
app/src/main/java/com/example/mysmsapp/MainActivity.java

@@ -1,10 +1,14 @@
 package com.example.mysmsapp;
 
 import android.app.role.RoleManager;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.widget.Toast;
 
@@ -61,6 +65,26 @@ public class MainActivity extends AppCompatActivity {
             Log.d(TAG, messages.toString());
             printPdu(res);
         });
+
+        findViewById(R.id.btn_info).setOnClickListener(e -> {
+            TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+            Log.i(TAG, "IMEI: " + telephonyManager.getImei());
+            Log.i(TAG, "serial: " + telephonyManager.getSimSerialNumber());
+            Log.i(TAG, "networkOperator: " + telephonyManager.getNetworkOperator());
+            Log.i(TAG, "simOperator: " + telephonyManager.getSimOperator());
+            SubscriptionManager subscriptionManager = SubscriptionManager.from(this);
+            final int simCount = subscriptionManager.getActiveSubscriptionInfoCountMax();
+
+            for (int i = 0; i < simCount; i++) {
+                SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfoForSimSlotIndex(i);
+                if (subInfo != null) {
+                    Log.i(TAG, "subId: " + subInfo.getSubscriptionId());
+                    Log.i(TAG, "simSlotIndex: " + subInfo.getSimSlotIndex());
+                    Log.i(TAG, "iccId: " + subInfo.getIccId());
+                    break;
+                }
+            }
+        });
     }
 
     @Override

+ 29 - 10
app/src/main/java/com/example/mysmsapp/SmsReceiver.java

@@ -10,28 +10,47 @@ import android.telephony.SmsMessage;
 import android.util.Log;
 import android.widget.Toast;
 
+import java.util.Objects;
+
 public class SmsReceiver extends BroadcastReceiver {
     private static final String TAG = "SmsReceiver";
 
     @Override
     public void onReceive(Context context, Intent intent) {
-        SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
-        for (SmsMessage message : messages) {
-            String sender = message.getOriginatingAddress();
-            String messageBody = message.getMessageBody();
-            Log.d(TAG, "onReceive: sender: " + sender + " message: " + messageBody);
-            Toast.makeText(context, messageBody, Toast.LENGTH_LONG).show();
-            Bundle bundle = intent.getExtras();
-
+        Bundle bundle = intent.getExtras();
+        if (Objects.equals(intent.getAction(), "android.provider.Telephony.SMS_RECEIVED")) {
+            Log.d(TAG, "onReceive: SMS_RECEIVED");
             if (bundle != null) {
                 for (String key : bundle.keySet()) {
                     Object value = bundle.get(key);
                     // 处理每个键值对
                     Log.d("Bundle", "key=" + key + ", value=" + value.toString() + ", class=" + value.getClass().getName());
                 }
-                byte[][] pdus = (byte[][]) bundle.get("pdus");
-                MainActivity.printPdu(pdus[0]);
+                Object[] pdus = (Object[]) bundle.get("pdus");
+                MainActivity.printPdu((byte[]) pdus[0]);
+            }
+
+        } else if (Objects.equals(intent.getAction(), "android.provider.Telephony.SMS_DELIVER")) {
+            Log.d(TAG, "onReceive: SMS_DELIVER");
+            SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
+            for (SmsMessage message : messages) {
+                String sender = message.getOriginatingAddress();
+                String messageBody = message.getMessageBody();
+                Log.d(TAG, "onReceive: sender: " + sender + " message: " + messageBody);
+                Toast.makeText(context, messageBody, Toast.LENGTH_LONG).show();
+
+
+                if (bundle != null) {
+                    for (String key : bundle.keySet()) {
+                        Object value = bundle.get(key);
+                        // 处理每个键值对
+                        Log.d("Bundle", "key=" + key + ", value=" + value.toString() + ", class=" + value.getClass().getName());
+                    }
+                    byte[][] pdus = (byte[][]) bundle.get("pdus");
+                    MainActivity.printPdu(pdus[0]);
+                }
             }
         }
+
     }
 }

+ 13 - 15
app/src/main/res/layout/activity_main.xml

@@ -1,40 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/main"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:gravity="center"
+    android:orientation="vertical"
     tools:context=".MainActivity">
 
     <Button
         android:id="@+id/btn_set_default"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="Set Default"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        android:text="Set Default" />
 
     <Button
         android:id="@+id/btn_send_sms"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="20dp"
-        android:text="Send SMS"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/btn_set_default" />
+        android:text="Send SMS" />
 
     <Button
         android:id="@+id/btn_pdu"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="20dp"
-        android:text="Create PDU"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/btn_send_sms" />
+        android:text="Create PDU" />
 
-</androidx.constraintlayout.widget.ConstraintLayout>
+    <Button
+        android:id="@+id/btn_info"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:text="Info" />
+</LinearLayout>