在Android上验证的开启或关闭GPS状态

时间:2016-05-31 10:35:40

标签: android android-studio android-gps

我有一个应用程序需要一个恒定的GPS状态ON.Suppose里面的应用程序,我关闭了我的GPS。现在我希望我的应用程序显示再次启用gps,否则它应该显示强制对话框。我希望你得到的情况我在打开或关闭打开应用程序,gps时没有问。

1 个答案:

答案 0 :(得分:0)

以下代码可以帮助您..

声明广播接收器

public class GpsLocationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {

        Log.e("GPS", "changed" + intent);

    }
}}

在AndroidManifest.xml文件中声明

 <receiver android:name=".GpsLocationReceiver">
        <intent-filter>
            <action android:name="android.location.PROVIDERS_CHANGED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

但是你已经声明了一个恒定的变量来监控GPS状态。在GpsLocationReceiver中打开或关闭GPS中的changaed,但不会反复打开或关闭值,因此你必须声明静态布尔变量来监视它,如果它关闭,那么通过下面的代码显示你的Dialog打开GPS设置。

public void showSettingsAlert(){

     AlertDialog myAlertDialog;

    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);

    // Setting Dialog Title
    builder.setTitle("GPS settings");
    builder.setCancelable(false);
    // Setting Dialog Message
    builder.setMessage("For Use This Application You Must Need to Enable GPS. do you want to go Setting menu?");

    // On pressing Settings button
    builder.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            mContext.startActivity(intent);
        }
    });

    // on pressing cancel button
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();

        }
    });

    myAlertDialog = builder.create();

        myAlertDialog.show();


}