public class GpsManager {
@SuppressWarnings("deprecation")
public static void turnGPSOn(Context context) {
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
context.sendBroadcast(intent);
String provider = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (!provider.contains("gps")) { // if gps is disabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings",
"com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
context.sendBroadcast(poke);
}
}
public static void turnGPSOff(Context context) {
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", false);
context.sendBroadcast(intent);
// String provider =
// Settings.Secure.getString(this.getContentResolver(),
// Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
// if (provider.contains("gps")) { // if gps is enabled
// final Intent poke = new Intent();
// poke.setClassName("com.android.settings",
// "com.android.settings.widget.SettingsAppWidgetProvider");
// poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
// poke.setData(Uri.parse("3"));
// this.sendBroadcast(poke);
// }
}
}清单文件添加权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />activity标签下添加:
android:exported="true"调用
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, null);
}
});
findViewById(R.id.btn_gps_on).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GpsManager.turnGPSOn(MainActivity.this);
}
});
findViewById(R.id.btn_gps_off).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GpsManager.turnGPSOff(MainActivity.this);
}
});
}
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, null);
}
});
findViewById(R.id.btn_gps_on).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GpsManager.turnGPSOn(MainActivity.this);
}
});
findViewById(R.id.btn_gps_off).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GpsManager.turnGPSOff(MainActivity.this);
}
});
} findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, null);
}
});
findViewById(R.id.btn_gps_on).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GpsManager.turnGPSOn(MainActivity.this);
}
});
findViewById(R.id.btn_gps_off).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GpsManager.turnGPSOff(MainActivity.this);
}
});
}
本文提供了一种在Android设备上通过代码开启和关闭GPS的方法,并详细展示了如何使用广播接收器及特定Intent来实现这一功能。此外,还介绍了需要在AndroidManifest.xml中声明的相关权限。
1350

被折叠的 条评论
为什么被折叠?



