您现在的位置: 爱51代码网 >> 范文 >> 文章正文
Android 如何使用代码打开GPS

Android 如何使用代码打开GPS

求一种普遍可以用的GPS打开的方法?
//好像不能用,提示权限不够,加上也不行
public void setGpsState()
{
       // 打开GPS
       Settings.Secure.setLocationProviderEnabled(getContentResolver(),
LocationManager.GPS_PROVIDER, true);
}
网上说是需要root或程序安装到System/app

private void setGpsState2()
{
Intent gpsIntent = new Intent();
gpsIntent.setClassName("com.android.settings",
"com.android.settings.widget.SettingsAppWidgetProvider");
gpsIntent.addCategory("android.intent.category.ALTERNATIVE");
gpsIntent.setData(Uri.parse("custom:3"));
try
{
PendingIntent.getBroadcast(this, 0, gpsIntent, 0).send();
}
catch (CanceledException e)
{
e.printStackTrace();
}
}
这种好像2.2以上不可以用


求一种普遍适用的方法 ,毕业论文 谢谢

不在Launcher中实现
这种方案关键在于对数据库值settings.secure.device_provisioned进行监听,如果发现该值被设置,即可执行我们的代码。

对该值进行监听,首先要响应android.intent.action.BOOT_COMPLETED广播,也就是当系统完成启动后就执行。系统启动完成后执行什么动作?要执行对数据库相应值的监听,具体说就是要注册一个observer,对settings.secure.device_provisioned进行监听,具体代码如下:
context.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(Settings.Secure.DEVICE_PROVISIONED), true, gpsObserver);

对数据库值注册监听后,在响应方法里,以上面代码为例,就是gpsObserver中,增加对数据库值的设置即可:
private ContentObserver gpsObserver = new ContentObserver(new Handler()) {
    @Override
    public void onChange(boolean selfChange) {
        if (Settings.Secure.getInt(conText.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0) != 0) {

            Settings.Secure.setLocationProviderEnabled(conText.getContentResolver(), LocationManager.NETWORK_PROVIDER, false);
            Settings.Secure.setLocationProviderEnabled(conText.getContentResolver(), LocationManager.GPS_PROVIDER, false);

            Intent i = new Intent(ACTION_SET_USE_LOCATION_FOR_SERVICES);
            i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.putExtra(EXTRA_DISABLE_USE_LOCATION_FOR_SERVICES, true);
            conText.startActivity(i);
        }
    }
}

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    ZOJ 3700 Ever Dream 文章中单词
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    青少年吸烟心理探析
    win server 2003开机一段时间
    怎样在win7上安装axure
    powershell和环境变量的关系
    window media player后播放视
    android手机无法与eclipse或
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的
    VOIP 视频通话消除回声
    无线路由器显示客户机mac ip
    scp 命令,目标目录不存在则
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |