Java 如何在多部手机上运行相同的Android应用程序?
我不确定问题的标题是否正确,但这是我的问题。 我有一个注册和登录的应用程序。根据用户的登录情况,用户具有不同的功能。所有用户登录后都会被引导到MapsActivity.java。我正在区分那里的用户,并相应地设置显示 我想要的是,如果用户以xyz@gmail.com,其他用户应能够看到该用户的位置。它在一部手机上工作。当我以身份登录时xyz@gmail.com,该位置存储在SharedReferences中,并在我以其他用户身份登录同一部手机时检索 但是当我以xyz@gmail.com从另一部手机以其他用户身份从另一部手机登录(2部手机-2个用户),手机之间没有连接。这个xyz@gmail.com在另一部电话上看不到位置 那么我做错了什么?如何在两部手机上同时运行相同的应用程序 希望你能理解我的问题。下面是我的MapsActivity.java,以进一步澄清我的问题 多谢各位Java 如何在多部手机上运行相同的Android应用程序?,java,android,location,sharedpreferences,Java,Android,Location,Sharedpreferences,我不确定问题的标题是否正确,但这是我的问题。 我有一个注册和登录的应用程序。根据用户的登录情况,用户具有不同的功能。所有用户登录后都会被引导到MapsActivity.java。我正在区分那里的用户,并相应地设置显示 我想要的是,如果用户以xyz@gmail.com,其他用户应能够看到该用户的位置。它在一部手机上工作。当我以身份登录时xyz@gmail.com,该位置存储在SharedReferences中,并在我以其他用户身份登录同一部手机时检索 但是当我以xyz@gmail.com从另一部手
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private LocationManager locationManager;
private LocationListener locationListener;
private Marker mLocationMarker;
public FirebaseUser user;
public Circle circle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
user = FirebaseAuth.getInstance().getCurrentUser();
if(!user.getEmail().equalsIgnoreCase("xyz@gmail.com"))
{
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
if(circle != null)
{
circle.remove();
}
circle = mMap.addCircle(new CircleOptions().center(latLng).radius(15).strokeColor(Color.BLUE).fillColor(Color.BLUE));
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
Double la = Double.longBitsToDouble(sp.getLong("la", Double.doubleToLongBits(-1)));
Double lo = Double.longBitsToDouble(sp.getLong("lo", Double.doubleToLongBits(-1)));
mLocationMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(la, lo)));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14), 1500, null);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
else if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
if(circle != null)
{
circle.remove();
}
circle = mMap.addCircle(new CircleOptions().center(latLng).radius(15).strokeColor(Color.BLUE).fillColor(Color.BLUE));
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
Double la = Double.longBitsToDouble(sp.getLong("la", Double.doubleToLongBits(-1)));
Double lo = Double.longBitsToDouble(sp.getLong("lo", Double.doubleToLongBits(-1)));
mLocationMarker = mMap.addMarker(new MarkerOptions().position(new LatLng(la, lo)));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14), 1500, null);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
}
else
{
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double lat = location.getLatitude();
double lon = location.getLongitude();
LatLng lolo = new LatLng(lat, lon);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
mLocationMarker = mMap.addMarker(new MarkerOptions().position(lolo));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(lolo, 14), 1500, null);
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putLong("la", Double.doubleToLongBits(lat));
edit.putLong("lo", Double.doubleToLongBits(lon));
edit.apply();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
else if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double lat = location.getLatitude();
double lon = location.getLongitude();
LatLng lolo = new LatLng(lat, lon);
if(mLocationMarker != null)
{
mLocationMarker.remove();
}
mLocationMarker = mMap.addMarker(new MarkerOptions().position(lolo));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(lolo, 14), 1500, null);
SharedPreferences sp = getSharedPreferences("MapsActivity.java", MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
edit.putLong("la", Double.doubleToLongBits(lat));
edit.putLong("lo", Double.doubleToLongBits(lon));
edit.apply();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
}
}
}
/**
* Manipulates the map once available.
* This callback is triggered when the map is ready to be used.
* This is where we can add markers or lines, add listeners or move the camera. In this case,
* we just add a marker near Sydney, Australia.
* If Google Play services is not installed on the device, the user will be prompted to install
* it inside the SupportMapFragment. This method will only be triggered once the user has
* installed Google Play services and returned to the app.
*/
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
}
我看到您已经有了一个
FirebaseUser
对象;因此,请写入Firebase数据库而不是SharedReferences,以便其他设备上的其他用户可以共享数据。我考虑过这一点,但user.getEmail()、displayName和photoURL是唯一可能的。即使我创建了具有纬度和经度的用户,我也无法执行user.setLatitute(lat);:'(如果您使用用户名作为密钥,我想可能会回答您的问题。非常感谢!这很有帮助!:')