`

开,关闭GPRS的简单Demo

阅读更多
Android应用中开,关闭GPRS的简单Demo,可能在有的手机上不是很靠谱,我的M9上测试就不行,但是常规的或者原生态的Android手机应该都是可以的,测试C8600和XT800真机都是可以的.

package com.example;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.KeyEvent;

public class GprsEnable extends Activity {

	public final static int LOGIN_DIALOG = 1;
	private ConnectivityManager mConnectManager;
	/** The open gprs time counter we remember. */
	private int num = 0;
	private ProgressDialog mDialog;

	/** Open the gprs. */
	public void setNetWorkEnable(String cmd) {

		String[] args = new String[3];
		args[0] = "svc";
		args[1] = "data";
		args[2] = cmd;

		try {
			Process process = Runtime.getRuntime().exec(args);

			// get the err line
			InputStream stderr = process.getErrorStream();
			InputStreamReader isrerr = new InputStreamReader(stderr);
			BufferedReader brerr = new BufferedReader(isrerr);

			// get the output line
			InputStream outs = process.getInputStream();
			InputStreamReader isrout = new InputStreamReader(outs);
			BufferedReader brout = new BufferedReader(isrout);

			String line = null;
			String result = "";

			// get the whole error message string
			while ((line = brerr.readLine()) != null) {
				result += line;
				result += "\n";
			}

			if (result != "") {
				// put the result string on the screen
				System.out.println("the error outcome is ___" + result);
			}

			result = "";
			// get the whole standard output string
			while ((line = brout.readLine()) != null) {
				result += line;
				result += "\n";
			}
			if (result != "") {
				// put the result string on the screen
				System.out.println("the outcome is ___" + result);
			}
			if (!cmd.equalsIgnoreCase("disable")) {
				try {
					Thread.sleep(2000);
					checkState();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		showDialog(GprsEnable.LOGIN_DIALOG);
		mConnectManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		if (checkWifiStatus()) {
			dismissDialog(GprsEnable.LOGIN_DIALOG);
			return;
		}
		if (!checkGprsStatus()) {
			setNetWorkEnable("enable");
			return;
		}
		dismissDialog(GprsEnable.LOGIN_DIALOG);
	}

	/** Check the wifi is open or not. */
	public boolean checkWifiStatus() {
		return mConnectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
				.getState() == NetworkInfo.State.CONNECTED ? true : false;
	}

	/** Check the Gprs is open or not. */
	public boolean checkGprsStatus() {
		return mConnectManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
				.getState() == NetworkInfo.State.CONNECTED ? true : false;
	}

	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case GprsEnable.LOGIN_DIALOG:
			mDialog = new ProgressDialog(GprsEnable.this);
			mDialog.setMessage("GPRS开启中....");
			return mDialog;
		default:
			return null;
		}
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		switch (keyCode) {
		case 4:
			if (checkGprsStatus()) {
				setNetWorkEnable("disable");
			}
			finish();
			break;
		}
		return true;
	}

	/** Check the gprs is opened or not,if not try to open one time again. */
	public void checkState() {
		num++;
		if (!checkGprsStatus() && num < 2) {
			setNetWorkEnable("enable");
		} else {
			dismissDialog(GprsEnable.LOGIN_DIALOG);
		}
	}
}


需要添加的权限:

<!-- 查询网络状态权限 -->
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	<!-- 修改手机连接网路状态权限 -->
	<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics