`

开,关闭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" />

分享到:
评论

相关推荐

    GPRS.zip_GPRS_GPRS的demo_gprs 通讯

    通讯代码,其中包括ClientDemo及ServiceDemo,对GPRS初学者有一定帮助

    GPRS开发必备Demo

    GPRS Demo 调试,GPRS开发必备GPRS开发必备GPRS开发必备GPRS开发必备GPRS开发必备

    Android禁用GPRS Demo效果

    本"Android禁用GPRS Demo效果"示例主要展示了如何在Android应用中实现对GPRS数据连接的开启和关闭功能,以满足用户的个性化需求。 首先,我们需要理解Android系统的网络管理API。Android提供了ConnectivityManager...

    Android GPRS获取位置信息DEMO

    本DEMO "Android GPRS获取位置信息" 展示了如何利用GPRS(General Packet Radio Service)技术来获取设备的地理位置。 首先,我们要理解GPRS是一种无线通信技术,它允许在GSM网络上提供连续的数据连接,为设备提供...

    GPRS打开和关闭

    在Android系统中,GPRS的开启与关闭涉及到移动数据的使用控制,对于节省流量和保护隐私至关重要。 一、GPRS基础知识 1.1 GPRS原理:GPRS利用了GSM网络的空闲信道来传输数据,将语音网络转化为数据传输,提供比传统...

    gprs_demo,gprs用的例子程序

    gprsdemo这个是我从别的地方用分下下来的,希望对大家是有用的

    宏电DTU的DDP协议GPRS DSC中心源代码DEMO SDK

    这个压缩包包含的资源是DDP开发包和DSC的DEMO(演示)代码,这些DEMO示例代码可以帮助开发者快速理解如何使用宏电的DDP协议通过GPRS网络与DSC进行通信。例如,C#和Delphi的DEMO可能包含了建立连接、发送和接收数据、...

    android GPRS开启关闭

    本篇将详细讲解如何通过编程的方式来实现Android设备上的GPRS开启与关闭,并涉及网络连接时间的计算。 首先,我们需要获取到手机的网络状态。在Android中,我们可以使用`ConnectivityManager`类来检查当前的网络...

    saro 上位机GPRS_DTU演示软件 vc++ gprs demo(大数据包).rar

    “vc++ gprs demo(大数据包)”部分表明这个软件是用Microsoft的C++编程语言开发的,且具有处理大数据包的能力。VC++是Visual C++的简称,是微软推出的一种集成开发环境,支持创建Windows平台的应用程序。这里的“大...

    GPRS_DTU调试工具(DEMO).rar

    描述中的“GPRS_DTU调试工具(DEMO)rar,GPRS_DTU调试工具(DEMO)”进一步确认了这是调试工具的DEMO版本,通常DEMO版软件会限制某些高级功能或者有时间限制,旨在让用户对软件有初步了解和试用。 从压缩包子文件...

    GPRSDTU演示数据中心DEMO.rar

    标题中的"GPRSDTU演示数据中心DEMO.rar"表明这是一个关于GPRS DTU设备的数据中心演示示例,主要用于展示如何通过GPRS DTU进行远程数据传输和接收调试。GPRS DTU,全称General Packet Radio Service Data Transfer ...

    STM32单片机读写 GSM-GPRS_TCP软件DEMO例程源码.zip

    总之,这个STM32单片机读写GSM-GPRS_TCP的DEMO例程源码涵盖了嵌入式系统开发中的多个关键知识点,包括STM32微控制器的使用、TCP/IP协议栈的实现、GSM-GPRS模块的控制以及可能的RTOS应用。通过深入理解这些内容,...

    ARM9和Linux下的GPRS模块C代码

    在给定的部分内容中,可以看到多个与GPRS模块相关的AT指令,如初始化模块(AT+HRST=1)、关闭模块电源(AT$POWEROF)、读取SIM卡ID号(AT+CIMI)等。这些指令对于初始化和配置GPRS模块至关重要,是实现远程无线控制...

    demo_GPRS

    【标题】"demo_GPRS" 是一个基于 Delphi 开发的 GPRS 测试软件,它主要用于测试和验证 GPRS(General Packet Radio Service)通信技术在实际应用中的性能和稳定性。Delphi 是一种流行的面向对象的编程语言,尤其在...

    实现GPRS远端控制家里的房门关闭和开启

    GPRS

    GPRS模组M26的TCP/IP应用的单片机DEMO程序

    《GPRS模组M26在TCP/IP应用中的单片机DEMO程序详解》 GPRS模组M26是一款广泛应用于物联网领域的通信模块,它以其强大的数据传输能力和灵活的TCP/IP协议支持,使得远程控制和监控变得轻而易举。在基于PIC18系列...

    Androd GPRS打开关闭

    本文将详细介绍如何在Android平台上实现GPRS的自动开启与关闭,以及这一过程中涉及的关键技术点。 首先,要实现GPRS的自动控制,我们需要对Android系统的网络API有深入理解。Android提供了ConnectivityManager和...

    Java串口/RXTX/GSM/GPRS完整的Demo

    这是一个完整的Java串口通信的例子,本案例中Java通过RXTX控制GSM模块,使用GPRS发送数据到服务器端。这是一个非常有参考价值的案例,能启发你对串口操作的理解,你不一定要控制GSM模块,其他模块也是同样道理,希望...

    Android GPRS的自动打开与关闭

    本教程将深入探讨如何实现Android应用中GPRS的自动打开与关闭功能,这对于创建高效能且节省用户流量的应用至关重要。 首先,我们需要了解Android的网络权限管理。在AndroidManifest.xml文件中,你需要添加以下权限...

Global site tag (gtag.js) - Google Analytics