2016-03-08 73 views
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權限。因此根權限對我來說不是問題。

我們如何以編程方式更改系統語言?

+1

您的意思是編程,而不是務實的類型? –

+0

@ cricket_007 OMG我使用谷歌瀏覽器的自動更正 – MBH

+0

我的意思是,如果你的意思是「以一種明智的方式」,那麼它「起作用」:) –

回答