我如何检查用户是不是真的在他的手机上启用了 android 中的 gps 位置

Posted

技术标签:

【中文标题】我如何检查用户是不是真的在他的手机上启用了 android 中的 gps 位置【英文标题】:How can i check user really enabled the gps location on his phone in android我如何检查用户是否真的在他的手机上启用了 android 中的 gps 位置 【发布时间】:2016-03-05 13:11:12 【问题描述】:

我的应用程序需要 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】:

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

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

1. 创建一个方法来检查 GPS 是否启用,并相应地启动下一个 Activity:

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 Cancelable false 形成背面和外部对话框的触摸:

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

【讨论】:

以上是关于我如何检查用户是不是真的在他的手机上启用了 android 中的 gps 位置的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 当域的IP专用时检查域是不是与服务器的IP匹配

提示后检查用户是不是启用了 GPS

在android上检测USB网络共享

如何检查用户设备上是不是未启用 chrome

如何检查 iOS 设备上是不是启用了 Motion & Fitness?

如何确定是不是是第一次渲染视图