位置服务在某些Android设备上运行不正常

时间:2014-08-07 05:20:15

标签: android gps location

如果设备的GPS位置已禁用,我将使用以下代码向用户显示一个对话框。

final AlertDialog.Builder builder =
        new AlertDialog.Builder(activity);
        final String action = Settings.ACTION_LOCATION_SOURCE_SETTINGS;
        final String message = "Enable GPS"
        + " service to find current location. And change the location mode to high accuracy for the app to perform accurately. Click OK to go to"
        + " location services settings to let you do so.";

        builder.setMessage(message)
        .setPositiveButton("OK",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface d, int id) {
                activity.startActivity(new Intent(action));
                d.dismiss();
            }
        })
        .setNegativeButton("Cancel",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface d, int id) {
                d.cancel();
            }
        });
        builder.create().show();

到目前为止,我已经在两个设备MotoG(v 4.4.4)和Samsung duos(v 4.1.2)上测试了这段代码。

我的两台设备都打开了GPS。 在MotoG中给出了正确的结果,但是在三星设备中它返回false。

但是三星设备却将地址返回给我(我正在连接到位置服务以获取当前地址)。我在位置客户端的onConnected方法中获取地址。如果它返回地址,那么应该启用GPS吗?

为什么有人知道这个问题?

1 个答案:

答案 0 :(得分:0)

试试这个

public void showSettingsAlert(){
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

    // Setting Dialog Title
    alertDialog.setTitle("GPS settings");

    // Setting Dialog Message
    alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

    // Setting Icon to Dialog
    //alertDialog.setIcon(R.drawable.delete);

    // On pressing Settings button
    alertDialog.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
    alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
        }
    });

    // Showing Alert Message
    alertDialog.show();
}