IM-A820L非英文韩文开机变韩文的原因(其他泛泰机型可参考)

关键代码在Settings\smali\com\android\settings\usim\usimReceiver.smali中,这里就不附上了,请自行查看研究

最直接的解决方法是删除Settings\AndroidManifest.xml中的

        <receiver android:name=".usim.usimReceiver">
            <intent-filter>
                <action android:name="android.intent.action.SIM_STATE_CHANGED" />
                <action android:name="com.android.settings.action.ISUSIMREADING" />
                <action android:name="android.internal.telephony.sky.intent.action.TIME_VALID_CHECK" />
            </intent-filter>
        </receiver>
之后,也可以删除Settings\smali\com\android\settings\usim\文件夹,未发现有其他影响
若不改Settings\AndroidManifest.xml,也可以删除Settings\smali\com\android\settings\usim\usimReceiver.smali中的

    invoke-direct {p0, v6, p1}, Lcom/android/settings/usim/usimReceiver;->changeLanguage(Ljava/lang/String;Landroid/content/Context;)V
共有12处


最后附上Settings\smali\com\android\settings\usim\usimReceiver.smali对应的java代码供参考

// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   usimReceiver.java

package com.android.settings.usim;

import android.app.ActivityManagerNative;
import android.app.IActivityManager;
import android.app.backup.BackupManager;
import android.content.*;
import android.content.res.Configuration;
import android.os.*;
import android.util.Log;
import com.android.internal.telephony.*;
import java.util.Locale;

public class usimReceiver extends BroadcastReceiver
{

	private static final String COLUMN_NAMES[];
	static final String PHONES_PROJECTION[];
	private static final String USIM_COLUMN_NAMES[];
	private static boolean isReadEF = 0;
	private Handler mHandler;
	private ISkyTelephony mPhone;

	public usimReceiver()
	{
		1 1_1 = new 1();
		mHandler = 1_1;
	}

	private void changeLanguage(String s, Context context)
	{
		String s1;
		String s2;
		s1 = Locale.getDefault().getLanguage();
		s2 = Locale.KOREAN.getLanguage();
		if (s1.equals(s2)) goto _L2; else goto _L1
_L1:
		String s3 = Locale.KOREA.getLanguage();
		if (!s1.equals(s3)) goto _L3; else goto _L2
_L2:
		if (!s.equals("ko_KR")) goto _L5; else goto _L4
_L4:
		int i = Log.e("usimReceiverLocale", "No Change");
		int j = Log.e("usimReceiver", "Load Dialton");
		Handler handler = mHandler;
		Message message = mHandler.obtainMessage(203);
		boolean flag = handler.sendMessageDelayed(message, 20L);
_L7:
		return;
_L3:
		String s4 = Locale.ENGLISH.getLanguage();
		if (!s1.equals(s4) || !s.equals("en_US")) goto _L5; else goto _L6
_L6:
		int k = Log.e("usimReceiverLocale", "No Change");
		int l = Log.e("usimReceiver", "Load Dialton");
		Handler handler1 = mHandler;
		Message message1 = mHandler.obtainMessage(203);
		boolean flag1 = handler1.sendMessageDelayed(message1, 20L);
		  goto _L7
_L5:
		IActivityManager iactivitymanager;
		Configuration configuration;
		iactivitymanager = ActivityManagerNative.getDefault();
		configuration = iactivitymanager.getConfiguration();
		if (!s.equals("ko_KR")) goto _L9; else goto _L8
_L8:
		Locale locale = Locale.KOREA;
		configuration.locale = locale;
_L11:
		configuration.userSetLocale = true;
		iactivitymanager.updateConfiguration(configuration);
		BackupManager.dataChanged("com.android.providers.settings");
		int i1 = Log.e("usimReceiver", "Load Dialton");
		Handler handler2 = mHandler;
		Message message2 = mHandler.obtainMessage(203);
		boolean flag2 = handler2.sendMessageDelayed(message2, 20L);
		  goto _L7
_L9:
		if (!s.equals("en_US")) goto _L11; else goto _L10
_L10:
		Locale locale1 = Locale.ENGLISH;
		configuration.locale = locale1;
		  goto _L11
		RemoteException remoteexception;
		remoteexception;
		remoteexception.printStackTrace();
		int j1 = Log.e("usimReceiver", "Load Dialton");
		Handler handler3 = mHandler;
		Message message3 = mHandler.obtainMessage(203);
		boolean flag3 = handler3.sendMessageDelayed(message3, 20L);
		  goto _L7
		Exception exception;
		exception;
		int k1 = Log.e("usimReceiver", "Load Dialton");
		Handler handler4 = mHandler;
		Message message4 = mHandler.obtainMessage(203);
		boolean flag4 = handler4.sendMessageDelayed(message4, 20L);
		throw exception;
	}

	private void checkUsimLanguage(Context context)
	{
		ISkyTelephony iskytelephony = com.android.internal.telephony.ISkyTelephony.Stub.asInterface(ServiceManager.getService("iskytelephony"));
		mPhone = iskytelephony;
		if (mPhone == null) goto _L2; else goto _L1
_L1:
		if (!SkyUsim.isUsimCard()) goto _L4; else goto _L3
_L3:
		byte abyte0[];
		int i = Log.d("usimReceiverLocale", "USIM Mode");
		abyte0 = mPhone.loadEFTransparent(28421);
		if (abyte0 == null) goto _L6; else goto _L5
_L5:
		int j = 0;
_L17:
		int k = abyte0.length;
		if (j >= k) goto _L6; else goto _L7
_L7:
		if (abyte0[j] != 107) goto _L9; else goto _L8
_L8:
		int l = j + 1;
		if (abyte0[l] == 114) goto _L10; else goto _L9
_L9:
		if (abyte0[j] != 107) goto _L12; else goto _L11
_L11:
		int i1 = j + 1;
		if (abyte0[i1] != 111) goto _L12; else goto _L10
_L10:
		int j1 = Log.e("usimReceiverLocale", " language change KO From LI");
		changeLanguage("ko_KR", context);
_L16:
		return;
_L12:
		if (abyte0[j] != 101) goto _L14; else goto _L13
_L13:
		int k1 = j + 1;
		if (abyte0[k1] != 110) goto _L14; else goto _L15
_L15:
		int l1 = Log.e("usimReceiverLocale", " language change EN From LI");
		changeLanguage("en_US", context);
		  goto _L16
		RemoteException remoteexception;
		remoteexception;
		int i2 = Log.e("usimReceiverLocale", "checkUsimLanguage() ERROR");
		  goto _L16
_L14:
		j += 2;
		  goto _L17
_L6:
		byte abyte1[] = mPhone.loadEFTransparent(12037);
		if (abyte1 == null) goto _L2; else goto _L18
_L18:
		j = 0;
_L28:
		int j2 = abyte1.length;
		if (j >= j2) goto _L2; else goto _L19
_L19:
		if (abyte1[j] != 107) goto _L21; else goto _L20
_L20:
		int k2 = j + 1;
		if (abyte1[k2] == 114) goto _L22; else goto _L21
_L21:
		if (abyte1[j] != 107) goto _L24; else goto _L23
_L23:
		int l2 = j + 1;
		if (abyte1[l2] != 111) goto _L24; else goto _L22
_L22:
		int i3 = Log.d("usimReceiverLocale", " language change KO From PL");
		changeLanguage("ko_KR", context);
		  goto _L16
_L24:
		if (abyte1[j] != 101) goto _L26; else goto _L25
_L25:
		int j3 = j + 1;
		if (abyte1[j3] != 110) goto _L26; else goto _L27
_L27:
		int k3 = Log.d("usimReceiverLocale", " language change EN From PL");
		changeLanguage("en_US", context);
		  goto _L16
_L26:
		j += 2;
		  goto _L28
_L4:
		if (!SkyUsim.isCsimCard()) goto _L30; else goto _L29
_L29:
		int l3 = Log.d("usimReceiverLocale", "GSM Mode");
		abyte1 = mPhone.loadEFTransparent(12037);
		if (abyte1 == null) goto _L2; else goto _L31
_L31:
		j = 0;
_L41:
		int i4 = abyte1.length;
		if (j >= i4) goto _L2; else goto _L32
_L32:
		if (abyte1[j] != 107) goto _L34; else goto _L33
_L33:
		int j4 = j + 1;
		if (abyte1[j4] == 114) goto _L35; else goto _L34
_L34:
		if (abyte1[j] != 107) goto _L37; else goto _L36
_L36:
		int k4 = j + 1;
		if (abyte1[k4] != 111) goto _L37; else goto _L35
_L35:
		int l4 = Log.d("usimReceiverLocale", " language change KO From PL");
		changeLanguage("ko_KR", context);
		  goto _L16
_L37:
		if (abyte1[j] != 101) goto _L39; else goto _L38
_L38:
		int i5 = j + 1;
		if (abyte1[i5] != 110) goto _L39; else goto _L40
_L40:
		int j5 = Log.d("usimReceiverLocale", " language change EN From PL");
		changeLanguage("en_US", context);
		  goto _L16
_L39:
		j += 2;
		  goto _L41
_L30:
		int k5 = Log.d("usimReceiverLocale", "Others Mode");
		abyte1 = mPhone.loadEFTransparent(12037);
		if (abyte1 == null) goto _L43; else goto _L42
_L42:
		j = 0;
_L53:
		int l5 = abyte1.length;
		if (j >= l5) goto _L43; else goto _L44
_L44:
		if (abyte1[j] != 107) goto _L46; else goto _L45
_L45:
		int i6 = j + 1;
		if (abyte1[i6] == 114) goto _L47; else goto _L46
_L46:
		if (abyte1[j] != 107) goto _L49; else goto _L48
_L48:
		int j6 = j + 1;
		if (abyte1[j6] != 111) goto _L49; else goto _L47
_L47:
		int k6 = Log.d("usimReceiverLocale", " language change KO From PL");
		changeLanguage("ko_KR", context);
		  goto _L16
_L49:
		if (abyte1[j] != 101) goto _L51; else goto _L50
_L50:
		int l6 = j + 1;
		if (abyte1[l6] != 110) goto _L51; else goto _L52
_L52:
		int i7 = Log.d("usimReceiverLocale", " language change EN From PL");
		changeLanguage("en_US", context);
		  goto _L16
_L51:
		j += 2;
		  goto _L53
_L43:
		abyte0 = mPhone.loadEFTransparent(28421);
		StringBuilder stringbuilder = (new StringBuilder()).append("checkUsimLanguage() :");
		String s = IccUtils.bytesToHexString(abyte1);
		String s1 = stringbuilder.append(s).toString();
		int j7 = Log.d("usimReceiver", s1);
		if (abyte0 == null) goto _L2; else goto _L54
_L54:
		int k7 = 0;
_L60:
		int l7 = abyte0.length;
		if (k7 >= l7) goto _L2; else goto _L55
_L55:
		if (abyte0[k7] != 37) goto _L57; else goto _L56
_L56:
		int i8 = Log.e("usimReceiverLocale", " language change KO From LangList");
		changeLanguage("ko_KR", context);
		  goto _L16
_L57:
		if (abyte0[k7] != 1) goto _L59; else goto _L58
_L58:
		int j8 = Log.e("usimReceiverLocale", " language change EN From LangList");
		changeLanguage("en_US", context);
		  goto _L16
_L59:
		k7++;
		  goto _L60
_L2:
		String s2 = Locale.getDefault().getLanguage();
		String s3 = (new StringBuilder()).append("Default Locale language is : ").append(s2).toString();
		int k8 = Log.d("usimReceiver", s3);
		if (s2 == null)
			break MISSING_BLOCK_LABEL_921;
		String s4 = Locale.ENGLISH.getLanguage();
		if (!s2.equals(s4))
			break MISSING_BLOCK_LABEL_921;
		changeLanguage("en_US", context);
		  goto _L16
		changeLanguage("ko_KR", context);
		  goto _L16
	}

	protected void log(String s)
	{
		String s1 = (new StringBuilder()).append("[usimReceiver] ").append(s).toString();
		int i = Log.d("usimReceiver", s1);
	}

	public void onReceive(Context context, Intent intent)
	{
		String s1;
		String s = (new StringBuilder()).append("onReceive ").append(intent).toString();
		log(s);
		s1 = intent.getAction();
		if (s1.equals("com.android.settings.action.ISUSIMREADING"))
		{
			Intent intent1 = new Intent("com.android.settings.action.USIMREADINGDONE");
			context.sendBroadcast(intent1);
		}
		if (!s1.equals("android.intent.action.SIM_STATE_CHANGED")) goto _L2; else goto _L1
_L1:
		String s2 = intent.getStringExtra("ss");
		if (!"LOCKED".equals(s2)) goto _L4; else goto _L3
_L3:
		isReadEF = true;
		int i = Log.e("usimReceiverLocale", "Locked & Lock Event");
		checkUsimLanguage(context);
		StringBuilder stringbuilder = (new StringBuilder()).append("");
		boolean flag = isReadEF;
		String s3 = stringbuilder.append(flag).toString();
		int j = Log.e("usimReceiverLocale", s3);
_L2:
		return;
_L4:
		if ("READY".equals(s2))
		{
			StringBuilder stringbuilder1 = (new StringBuilder()).append("");
			boolean flag1 = isReadEF;
			String s4 = stringbuilder1.append(flag1).toString();
			int k = Log.e("usimReceiverLocale", s4);
			if (!isReadEF)
			{
				int l = Log.e("usimReceiverLocale", "unLocked & Ready Event");
				checkUsimLanguage(context);
			}
		}
		if (true) goto _L2; else goto _L5
_L5:
	}

	static 
	{
		String as[] = new String[5];
		as[0] = "name";
		as[1] = "number";
		as[2] = "addnumber";
		as[3] = "groupid";
		as[4] = "email";
		COLUMN_NAMES = as;
		String as1[] = new String[6];
		as1[0] = "_id";
		as1[1] = "name";
		as1[2] = "number";
		as1[3] = "addnumber";
		as1[4] = "groupid";
		as1[5] = "email";
		USIM_COLUMN_NAMES = as1;
		String as2[] = new String[5];
		as2[0] = "_id";
		as2[1] = "display_name";
		as2[2] = "type";
		as2[3] = "label";
		as2[4] = "number";
		PHONES_PROJECTION = as2;
	}

	private class 1 extends Handler
	{

		final usimReceiver this$0;

		public void handleMessage(Message message)
		{
			message.what;
			JVM INSTR tableswitch 203 203: default 24
		//		               203 25;
			   goto _L1 _L2
_L1:
			return;
_L2:
			log("============USIM_MSG_ID_DIALTONE=============");
			SkyTouchFB.loadDialSound();
			if (true) goto _L1; else goto _L3
_L3:
		}

		1()
		{
			this$0 = usimReceiver.this;
			super();
		}
	}

}

转载请注明出处:http://blog.csdn.net/su_ky/article/details/7747394

你可能感兴趣的:(exception,android,String,null,action,import)