您好,欢迎访问本站博客!登录后台查看权限
  • 欢迎大神光临
  • 有朋自远方来 不亦悦乎

安卓系统定制:开机后自动打开GPS

码叔笔记 老刘 2019-08-27 46 次浏览 0个评论

安卓系统:4.4

测试硬件:友善之臂m1 plus

定制需求:客户预装的软件需要定位功能,而安卓4.4系统默认定位开关是关闭的,因此需要开机后自动打开GPS

gps.png

阅读注意,代码前的-代表删除+代表添加(即git diff的结果)。


1、寻找一个开机后会运行地方对GPS进行开启


修改packages/apps/Launcher2/src/com/android/launcher2/Launcher.java

    
+    private boolean FJ_isOpenedGPS() {
+        LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
+        if (lm == null) return false;
+        return lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
+    }
+
+    private void FJ_openGPS() {
+        Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);
+        if(!FJ_isOpenedGPS()) {
+            Toast.makeText(this, "GPS open FAIL", Toast.LENGTH_SHORT).show();
+        }
+     }


onCreate函数的修改

+        if(!FJ_isOpenedGPS()) {
+            Toast.makeText(this, "The GPS is OFF", Toast.LENGTH_SHORT).show();
+            FJ_openGPS();
+        } else {
+            Toast.makeText(this, "The GPS is ON", Toast.LENGTH_SHORT).show();
+        }


为Launcher2添加额外的权限

+    <!-- FJ:GPS CTRL -->
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+


<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />和 <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />是必须的权限。


2、对app的默认位置授权类型进行配置

frameworks\base\packages\SettingsProvider\res\values\default.xml相关修改:

-   <string name="def_location_providers_allowed" translatable="false">gps</string>
+   <string name="def_location_providers_allowed" translatable="false">network,gps</string>






已有 46 位网友参与,快来吐槽:

发表评论