7

私はそれをいくつか調べましたが、それは不可能だと考えていますが、Android プラットフォームで何かが不可能であると考えるのは冒涜的です。アイデアは、3G と 4G を切り替えるウィジェットを作成して、設定を入力せずにバッテリーを節約することです。本質的に、設定メニューは単なる別のアプリケーションではないので、他のアプリケーションでも可能であるはずですか?

4

2 に答える 2

2

標準のサードパーティ アプリとして、これは不可能です。

ただし、アプリがプラットフォーム署名済み (またはプリインストールされた特権アプリ) で、非表示のフレームワーク API にアクセスできる場合は、TelephonyManager クラスを介してこれが可能です。

例えば:

import android.telephony.TelephonyManager;

...

TelephonyManager telephonyManager = new TelephonyManager(context, 1); // 1 = SIM slot
telephonyManager.setPreferredNetworkType(1, newNetworkMode); // 1 = SIM slot, newNetworkMode = the desired network mode defined in RILConstants.java

RILConstants のネットワーク モードは次のとおりです。

/* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */
int NETWORK_MODE_WCDMA_PREF     = 0; /* GSM/WCDMA (WCDMA preferred) */
int NETWORK_MODE_GSM_ONLY       = 1; /* GSM only */
int NETWORK_MODE_WCDMA_ONLY     = 2; /* WCDMA only */
int NETWORK_MODE_GSM_UMTS       = 3; /* GSM/WCDMA (auto mode, according to PRL)
                                        AVAILABLE Application Settings menu*/
int NETWORK_MODE_CDMA           = 4; /* CDMA and EvDo (auto mode, according to PRL)
                                        AVAILABLE Application Settings menu*/
int NETWORK_MODE_CDMA_NO_EVDO   = 5; /* CDMA only */
int NETWORK_MODE_EVDO_NO_CDMA   = 6; /* EvDo only */
int NETWORK_MODE_GLOBAL         = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
                                        AVAILABLE Application Settings menu*/
int NETWORK_MODE_LTE_CDMA_EVDO  = 8; /* LTE, CDMA and EvDo */
int NETWORK_MODE_LTE_GSM_WCDMA  = 9; /* LTE, GSM/WCDMA */
int NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = 10; /* LTE, CDMA, EvDo, GSM/WCDMA */
int NETWORK_MODE_LTE_ONLY       = 11; /* LTE Only mode. */
int NETWORK_MODE_LTE_WCDMA      = 12; /* LTE/WCDMA */
int NETWORK_MODE_TDSCDMA_ONLY            = 13; /* TD-SCDMA only */
int NETWORK_MODE_TDSCDMA_WCDMA           = 14; /* TD-SCDMA and WCDMA */
int NETWORK_MODE_LTE_TDSCDMA             = 15; /* TD-SCDMA and LTE */
int NETWORK_MODE_TDSCDMA_GSM             = 16; /* TD-SCDMA and GSM */
int NETWORK_MODE_LTE_TDSCDMA_GSM         = 17; /* TD-SCDMA,GSM and LTE */
int NETWORK_MODE_TDSCDMA_GSM_WCDMA       = 18; /* TD-SCDMA, GSM/WCDMA */
int NETWORK_MODE_LTE_TDSCDMA_WCDMA       = 19; /* TD-SCDMA, WCDMA and LTE */
int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA   = 20; /* TD-SCDMA, GSM/WCDMA and LTE */
int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA  = 21; /*TD-SCDMA,EvDo,CDMA,GSM/WCDMA*/
int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22; /* TD-SCDMA/LTE/GSM/WCDMA, CDMA, and EvDo */
于 2020-08-24T11:22:30.510 に答える
1

これを可能にするAPIはSDKに表示されていません。これは、Androidがネットワーク選択設定をサポートしていないということではありません。これは、alextsc_offがほのめかしているように、Googleが必要なAPIへの単なる人間(アプリ開発者)へのアクセスを許可するのに適しているとは考えていないことを意味します。

于 2012-01-22T12:34:34.947 に答える