SDKから隠されているSettings.Secureクラスの好みがあります:あなたは、この上でリフレクションを使用するか、またはちょうどあなたのプロジェクトに定数をローカライズすることができ
/**
* The preferred network mode 7 = Global
* 6 = EvDo only
* 5 = CDMA w/o EvDo
* 4 = CDMA/EvDo auto
* 3 = GSM/WCDMA auto
* 2 = WCDMA only
* 1 = GSM only
* 0 = GSM/WCDMA preferred
* @hide
*/
public static final String PREFERRED_NETWORK_MODE =
"preferred_network_mode";
が。この問題は、この設定の値を(すべての安全な設定と同様に)変更することができず、読み取りのみ可能であることです。上記の値は唯一のものではありませんが、実際にはcom.android.internal.telephony.RILConstantsにもう少しあります。これはSDKから隠されており、Reflectionにアクセスする必要があります。
TelephonyManagerにもう1つの非表示の方法がありますが、この定数を設定する方法は他にありません。
/**
* Return if the current radio is LTE on CDMA. This
* is a tri-state return value as for a period of time
* the mode may be unknown.
*
* @return {@link Phone#LTE_ON_CDMA_UNKNOWN}, {@link Phone#LTE_ON_CDMA_FALSE}
* or {@link Phone#LTE_ON_CDMA_TRUE}
*
* @hide
*/
public int getLteOnCdmaMode() {
try {
return getITelephony().getLteOnCdmaMode();
} catch (RemoteException ex) {
// Assume no ICC card if remote exception which shouldn't happen
return Phone.LTE_ON_CDMA_UNKNOWN;
} catch (NullPointerException ex) {
// This could happen before phone restarts due to crashing
return Phone.LTE_ON_CDMA_UNKNOWN;
}
}
私の研究から、あなたは、このようなAN作ることができなかった。これは、デバイスが「LTE/CDMA」(LTE_ON_CDMA_TRUE)または「のみCDMA」(LTE_ON_CDMA_FALSE)に設定されているかどうか、あなたが知りたい正確に何を言うだろうコマンドラインからsetprop
のようなものを使用しますが、この設定を有効にするには、テレフォニープロセス全体を再起動する必要があります。
最後に、まだ興味がある場合は、com.android.phone.Settingsを参照して、システムがこのトグルをどのように処理するかを確認してください。それはむしろ精巧で、私が言及したように、通常のAndroidアプリケーションが許可されない許可が必要になります。
出典
2012-01-02 20:30:52
Tom
私の知る限りを、通常のAndroidのSDKアプリケーションは、これを変更することはできません。 – CommonsWare
ああ、とても面白いです。私はそれが事実ではないことを願っています。今調べている。私はHTCの携帯電話のためのウィジェットが存在すると聞きました。 –
問題のアプリウィジェットがHTC電話に同梱されている場合、これは通常のAndroid SDKアプリケーションではありません。 @CommonsWare、 – CommonsWare