5

残念ながら、バニラAndroidでプログラムによるデータ接続(GPRS / UMTS)を検出して変更することは不可能であり、一般的な回避策はAPN設定を編集することです。これはほとんど良い解決策ではありません。

ただし、私のデバイス(Xperia X10)では、「データローミング」の近くに追加の設定があり、MMSとデータを有効または無効にできます。これはSonyEricssonによるパーソナライズだと思いますが、他のベンダーでもこのようなものを持っているかもしれません。この設定にアクセスする方法はありますか?

4

2 に答える 2

5

私はSE電話を持っていませんが、そのシステムダンプを調べて:

  • AOSPソースでは、com.android.internal.telephonyインターフェースにenableDataConnectivity()とdisableDataConnectivity()の2つの内部メソッドがあります。このインターフェースとその実装は、システムの一部です。
  • Phone.apkアプリの一部であるcom.android.phone.PhoneInterfaceManagerには、上記と同じ名前の2つのメソッドもあります。これらのメソッドは、上記/システムのものを呼び出すだけです。
  • Sonyはcom.android.phone.PhoneInterfaceManager.enableDataConnectivity()を変更したため、sharedPreferencesに格納されているブール値をさらにチェックします。falseの場合、enableDataConnectivity()メソッドは常にcom.android.internal.telephonyのdisableDataConnectivity()を呼び出します。
  • もちろん、このブール値は設定画面「MMS&data」で制御されます。これは「com.android.phone_preferences」設定コンテナに保存され、設定キーは「data_service_key」です。さらに、このチェックボックスを切り替えると、設定アクティビティによってcom.android.internal.telephonyのメソッドが自動的に呼び出され、データの状態がすぐに切り替わります。

データ接続ウィジェットなどをROMに追加する場合は、次のようにします。

  • ルートが必要です。
  • 上記の設定にアクセスするには、「android.uid.phone」sharedUserIdが必要です。

Phone.apkを変更するのが最善だと思うので、データを有効/無効にするという特別な意図があります。data_service_keyブール値を設定し、com.android.internal.telephonyからメソッドの1つを呼び出します。これは非常に簡単なことであるはずです。そうすれば、ウィジェット、アプリ、その他のものを非常に簡単に作成できるようになります。それらはその特別な意図を使用します。

于 2010-09-16T01:46:59.833 に答える
1

SE開発者ゾーンを見たことがありますか?とても便利だと思いました。

于 2010-09-14T06:35:58.790 に答える