Bei Android 11.0 drücken Sie lange auf die Taste, um die standardmäßigen mobilen Daten der SIM-Karte zu wechseln

Bei Android 11.0 drücken Sie lange auf die Taste, um die standardmäßigen mobilen Daten der SIM-Karte zu wechseln

In letzter Zeit haben wir Anfragen von Kunden erhalten, die die Standard-Mobilfunkdaten der SIM-Karte durch langes Drücken der Taste ändern möchten. Diese Funktion wird hauptsächlich durch langes Drücken der Taste zum Senden einer Übertragung realisiert. Die spezifischen Änderungen sind wie folgt:

Erstellen Sie zunächst eine Übertragung. Bitte beachten Sie die folgenden Änderungen:

/vendor/mediatek/proprietary/packages/apps/MtkSettings/AndroidManifest.xml
 

+       <receiver
+            android:name=".sim.SimReceiver">
+            <intent-filter>
+                <action android:name="android.intent.action.sim.longpress" />
+            </intent-filter>
+        </receiver>

Zweitens führen Sie die Datei SimReceiver.java zusammen, die bestimmte Funktionen implementiert:

/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/sim/SimReceiver.java

package com.android.settings.sim;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.RingtoneManager;
import android.net.Uri;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.Log;
import java.util.List;

public class SimReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.sim.longpress")) {

	    SubscriptionManager subscriptionManager = SubscriptionManager.from(context);
	    List<SubscriptionInfo> subscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
	    if (subscriptionInfoList != null && subscriptionInfoList.size() > 1) {
    		int subId1 = subscriptionInfoList.get(0).getSubscriptionId();
    		int subId2 = subscriptionInfoList.get(1).getSubscriptionId();
	        if (SubscriptionManager.getDefaultDataSubscriptionId() == subId1){
    	            subscriptionManager.setDefaultDataSubId(subId2);
	        } else if (SubscriptionManager.getDefaultDataSubscriptionId() == subId2){
    	            subscriptionManager.setDefaultDataSubId(subId1);
	        }
	    }
        }
    }
}

Konfigurieren Sie dann die entsprechende Schaltfläche zum Senden einer Übertragung, indem Sie sie gedrückt halten. Die spezifischen Änderungen sind wie folgt:

/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

+            case KeyEvent.KEYCODE: {
+                if (down) {
+		    Handler mHandler = new Handler();
+                    mHandler.postDelayed(new Runnable() {
+                        public void run() {
+                            sendBC("android.intent.action.sim.longpress");
+                        }
+                    }, 2 * 1000);
+                }

+    private void sendBC(String action) {
+        Intent intent = new Intent();
+        intent.setAction(action);
+        intent.addFlags(0x01000000);
+        mContext.sendBroadcast(intent);
+    }

Registrieren Sie sich abschließend für den Empfang der Übertragung:

/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/sim/SimDialogActivity.java

+import android.content.IntentFilter;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        showOrUpdateDialog();
+	SimReceiver aSimReceiver = new SimReceiver();
+       IntentFilter intentFilter = new IntentFilter();
+       intentFilter.addAction("android.intent.action.sim.longpress");
+       registerReceiver(aSimReceiver ,intentFilter);
    }

Neu kompilieren und überprüfen, die Änderung wird wirksam und die Funktion zum Umschalten der Standard-Mobilfunkdaten der SIM-Karte durch langes Drücken der Taste wurde implementiert

おすすめ

転載: blog.csdn.net/Jeffries_C/article/details/134861029