0
我在本文中發現的內容對於以編程方式更改整個系統語言非常有趣。以編程方式更改系統語言 - Android
How to change android system locale
它顯示了2種方法:
1-使用類反射來訪問API:
try {
Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative");
Object am=activityManagerNative.getMethod("getDefault").invoke(activityManagerNative);
Object config=am.getClass().getMethod("getConfiguration").invoke(am);
config.getClass().getDeclaredField("locale").set(config, Locale.US);
config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true);
am.getClass().getMethod("updateConfiguration",android.content.res.Configuration.class).invoke(am,config);
}catch (Exception e) {
e.printStackTrace();
}
2-在構建路徑使用假類
package android.app;
import android.content.res.Configuration;
import android.os.RemoteException;
public interface IActivityManager {
public abstract Configuration getConfiguration() throws RemoteException;
public abstract void updateConfiguration (Configuration configuration) throws RemoteException;
}
And
package android.app;
public abstract class ActivityManagerNative implements IActivityManager {
public static IActivityManager getDefault(){
return null;
}
}
文章中解釋的細節。這適用於Android 4.2之前。然而,我在Android 4.4.2上測試了這兩種方式,並沒有奏效。
我的應用程序已經必須擁有root權限。因此根權限對我來說不是問題。
我們如何以編程方式更改系統語言?
您的意思是編程,而不是務實的類型? –
@ cricket_007 OMG我使用谷歌瀏覽器的自動更正 – MBH
我的意思是,如果你的意思是「以一種明智的方式」,那麼它「起作用」:) –