gprs という名前の ToggleButton があります。gprsのオンとオフを切り替えるために必要です。それを達成する方法は?ここを見てきましたが、エラーが発生し、私の場合の使用方法がわかりません。
質問する
818 次
1 に答える
0
OK、トグルボタンを使用して、誰かが同じ問題を抱えている場合は、ここに解決策を投稿します. まず、gprs 設定用に別のクラスを作成しました。
public class GprsSettings {
static void setMobileDataEnabled(Context context, boolean enabled) {
try {
final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final Class conmanClass = Class.forName(conman.getClass().getName());
final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
iConnectivityManagerField.setAccessible(true);
final Object iConnectivityManager = iConnectivityManagerField.get(conman);
final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
Log.i("setMobileDataEnabled()","OK");
}
catch (Exception e)
{
e.printStackTrace();
Log.i("setMobileDataEnabled()","FAIL");
}
}
}
次に、最初にアクティビティで、gprs がオンかオフかを確認するコードを追加します....onCreate メソッドの上に配置します。
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
return false;
} else
return true;
}
}
次に、私のアクティビティでは、トースト付きのトグル ボタンにこのコードを使用しました。
gprs.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try {
if (((ToggleButton)v).isChecked()) {
GprsSettings.setMobileDataEnabled(getApplicationContext(), true);
Toast.makeText(getApplicationContext(), "GPRS is ON", Toast.LENGTH_LONG).show();
}else{
GprsSettings.setMobileDataEnabled(getApplicationContext(), false);
Toast.makeText(getApplicationContext(), "GPRS is OFF", Toast.LENGTH_LONG).show();
}
}
catch (Exception localException) {
Log.e("SwarmPopup", "error on GPRS listerner: " + localException.getMessage(), localException);
}
}
});
gprs.setChecked(isNetworkConnected());
それだけです、魅力のように機能します。
于 2013-03-13T12:30:10.590 に答える