Я предлагаю пользователю включить GPS. Я закодировал соответственно и сборка тоже удалась. Когда я запустил приложение, приложение предложило мне включить GPS. Но когда я закрыл это приложение, а затем снова открыл, приложение не предложило мне включить GPS. Я создал два отдельных файла Java, коды приведены ниже. Приложение запрашивает только один раз, независимо от того, закрываете ли вы или удаляете, а затем переустанавливаете, оно всегда запрашивает только один раз.
Можете ли вы, ребята, сказать мне, что я не так сделал?
Register.java
package com.abc.test2;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.widget.Toast;
public class Register implements LocationListener {
Context context;
public Register(Context c)
{
context=c;
}
public Location getLocation() {
if(ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
Toast.makeText(context, "Permission not granted", Toast.LENGTH_LONG).show();
return null;
}
LocationManager lm = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGPSEnabled){
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,6000,10,this);
Location l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
return l;
}else{
Toast.makeText(context, "Please Enable GPS",Toast.LENGTH_LONG).show();
}
return null;
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}
MainActivity.java
package com.abc.test2;
import android.Manifest;
import android.location.Location;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button btnGetLoc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnGetLoc = (Button)findViewById(R.id.btnGetLoc);
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},123);
btnGetLoc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Register register = new Register(getApplicationContext());
Location l = register.getLocation();
if(l != null){
double lat = l.getLatitude();
double lon = l.getLongitude();
Toast.makeText(getApplicationContext(),"LAT :"+lat+"/n"+"LON :"+lon,Toast.LENGTH_LONG).show();
}
}
});
}
}