我怎样才能检查用户是否在Android

时间:2015-12-01 14:55:49

标签: android gps

我的应用程序需要GPS,因此我已重定向用户以启用GPS,以防它关闭。

AlertDialog.Builder dialog = new AlertDialog.Builder(contxt);
            dialog.setMessage("Enable GPS Location Service");
            dialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                        // TODO Auto-generated method stub
                        Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                        contxt.startActivity(myIntent);
                    }
                });

问题是用户从弹出窗口转到位置设置,如果用户没有从位置设置激活GPS,而不是用户按下后退按钮并返回应用程序。如果此人再次返回应用程序而不是激活GPS装置,则应用程序必须再次显示该对话框。

所以我再次确保它如下,

GetLocationService();

        LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE );
        boolean statusOfGPS = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);

        if(statusOfGPS==false)
            GetLocationService();

但是,用户从位置设置再次无法启用GPS并单击“后退”按钮并返回应用程序。如何强制用户启用GPS并使用该应用程序。

1 个答案:

答案 0 :(得分:0)

  

如何强制用户启用GPS并使用   应用

在应用程序中移动下一个屏幕之前强制用户启用GPS:

1。创建一种启用或不启用GPS检查的方法,并相应地启动下一个活动:

private void isGPSEnabled(){
     LocationManager manager;
     boolean statusOfGPS =  
           manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
     if(statusOfGPS){
        // start next Activity
      }else{
         // show alert for enabling GPS
      }
  }

2。点击AlertDialog正面按钮点击使用startActivityForResult启动GPS设置屏幕:

@Override
 public void onClick(DialogInterface paramDialogInterface, int paramInt) {
    // TODO Auto-generated method stub
    Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS);
    contxt.startActivityForResult(myIntent,100);
 }

3。当用户从“设置”返回应用时,覆盖onActivityResult以检查GPS是否已启用:

@Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        isGPSEnabled();
    }

同时使AlertDialog可取消false形成背面和外部对话:

dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);