Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java android studio-检查权限_Java_Android_Android Studio - Fatal编程技术网

java android studio-检查权限

java android studio-检查权限,java,android,android-studio,Java,Android,Android Studio,我想得到协调,我使用函数GPSTracker(遵循教程),但任何问题。。。我找不到坐标,请帮帮我 这就是我的活动: public class InputDataSlo extends AppCompatActivity { button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { GPSTracke

我想得到协调,我使用函数GPSTracker(遵循教程),但任何问题。。。我找不到坐标,请帮帮我

这就是我的活动:

public class InputDataSlo extends AppCompatActivity {
   button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            GPSTracker gps = new GPSTracker (InputDataSlo.this);
            if(gps.canGetLocation()){
                double latitude = gps.getLatitude();
                double longitude= gps.getLongitude();
                textView.setText("Latitude: "+latitude+" Longitude: "+longitude);
            }else{
                Toast.makeText(getApplicationContext(),
                        "Please cek permision", Toast.LENGTH_LONG)
                        .show();
            }
        }
    });
}
这是文件GPSTracker.java:

public class GPSTracker extends Service implements LocationListener {

private Context context;
boolean isGPSEnabled = false;
boolean isNetworkEnabled = false;
boolean canGetLocation = false;

Location location;
double latitude, longitude;

LocationManager locationManager;
AlertDialogManager am = new AlertDialogManager();

public GPSTracker(Context context) {
    this.context = context;
    getLocation();
}

private Location getLocation() {
    // TODO Auto-generated method stub
    try {
        locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

        isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

        isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (isGPSEnabled) {
            this.canGetLocation = true;
            if (location == null) {
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 3, this);
                    if (locationManager != null){
                        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if (location != null){
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }

            }
        } else {
            showAlertDialog();
        }

    }catch(Exception e){
        e.printStackTrace();
    }
    return location;
}
public void showSettingsAlert(){
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(GPSTracker.this);

    // Setting Dialog Title
    alertDialog.setTitle("GPS is 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);
            startActivity(intent);
            dialog.cancel();
        }
    });

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

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

public void showAlertDialog(){
    am.showAlertDialog(GPSTracker.this, "GPS Setting", "Gps is not enabled. Do you want to enabled it ?", false);
}
public double getLatitude(){
    if (location != null){
        latitude = location.getLatitude();
    }

    return latitude;
}

public double getLongitude(){
    if (location != null){
        longitude = location.getLongitude();
    }

    return longitude;
}

public boolean canGetLocation(){
    return this.canGetLocation;
}
@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    if (location != null){
        this.location = location;
    }
}

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
 }
我的访问权限行有问题:

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 3, this);
                    if (locationManager != null){
                        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if (location != null){
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }

不要使用GPSTracker。代码被破坏了——它有时会工作,但在设计层面上是有缺陷的。它将启用与启动和运行混淆,并且不能解释您不能始终获取位置的事实。对于所有的方式,它打破了完整的解释,请参阅我的博客,其中也包含工作代码


此外,您还需要运行时权限(这也不在我的博客中,因为它早于运行时权限)。无论如何,你都需要添加这些内容。

链接的帖子/博客太长,但看起来很有希望/不错。我稍后再查。赞成票:)