android 在锁屏状态下打开GPRS

我的android手机在开锁的时候要使用滑动解锁,但是尝试的次数貌似只有30次。

前几天我的手机被同学拿去,结果他不知道密码所以就一直在不断的尝试,结果尝试的次数太多,手

 
机开启了锁定模式,只有使用谷歌帐号登录才能解锁手机!!

 

谷歌帐号我当然有,可是但是我的手机GPR关闭了,直接导致我的帐号登录不了啊!!重启也不行!最后我认为只有刷机了。。。

 

当我和另一个同学提起的时候,他给了我一个非常的方法----直接写一个小软件通过电脑

 
安装到手机上直接打开手机的GPRS,或者在电脑上用adb 命令直接打开GPRS! 结果我在网上找了半天也没有找到adb 相关的命令。。。最后只能通过写一个小apk来实现了

在网上搜索了android 开启相关权限的配置文件之后就准备自写一个demo 。。。但是自己水平有限,写不出来!!还是网上的大神给力啊!!

 

添加的权限如下 

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>

 

 

Java代码如下

 

 

package com.kress.gprs;

import java.lang.reflect.Method;

import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class GprsTestActivity extends Activity
{
    private ConnectivityManager mCM;
    
    private Button openButton;
    private Button shutButton;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mCM = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        
        openButton = (Button)findViewById(R.id.btnOpen);
        shutButton = (Button)findViewById(R.id.btnShut);
        openButton.setOnClickListener(btnListener);
        shutButton.setOnClickListener(btnListener);

                
                //setGprsEnable("setMobileDataEnabled", bEnable);只要把这句代码的注释去掉,运行程序到手机就可以立即打开手机的GPRS了


    }
    
    private Button.OnClickListener btnListener = new Button.OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            switch (v.getId())
            {
            case R.id.btnOpen:
                
                gprsEnable(true);
                break;
            case R.id.btnShut:
                
                gprsEnable(false);
                break;
            default:
                break;
            }
        }
        
    };
    
    //打开或关闭GPRS
    private boolean gprsEnable(boolean bEnable)
    {
        Object[] argObjects = null;
                
        boolean isOpen = gprsIsOpenMethod("getMobileDataEnabled");
        if(isOpen == !bEnable)
        {
            setGprsEnable("setMobileDataEnabled", bEnable);
        }
        
        return isOpen;    
    }
    
    //检测GPRS是否打开
    private boolean gprsIsOpenMethod(String methodName)
    {
        Class cmClass         = mCM.getClass();
        Class[] argClasses     = null;
        Object[] argObject     = null;
        
        Boolean isOpen = false;
        try
        {
            Method method = cmClass.getMethod(methodName, argClasses);

            isOpen = (Boolean) method.invoke(mCM, argObject);
        } catch (Exception e)
        {
            e.printStackTrace();
        }

        return isOpen;
    }
    
    //开启/关闭GPRS
    private void setGprsEnable(String methodName, boolean isEnable)
    {
        Class cmClass         = mCM.getClass();
        Class[] argClasses     = new Class[1];
        argClasses[0]         = boolean.class;
        
        try
        {
            Method method = cmClass.getMethod(methodName, argClasses);
            method.invoke(mCM, isEnable);
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

 

在电脑上通过调试模式将apk直接安装在手机上,然后就看见GPRS被打开了,我输入谷歌帐号,直接就登录成功了。 

当然我的手机成功解锁了,避免了刷机的麻烦~哈哈 

 

 

最后附上我的工程 apk 

https://files.cnblogs.com/qinyg/GprsTest.apk

首先adb install GprsTest.apk

然后 adb shell am start -n com.kress.gprs/com.kress.gprs.GprsTestActivity  

打开此应用,手机就会自动打开GPRS了

 

 

posted @ 2012-09-18 21:01  qinyg  阅读(2807)  评论(1编辑  收藏  举报