GPS跟踪器无法进入我的主活动屏幕的问题



为了更容易访问,这里是我的GitHub链接

https://github.com/PoetryHorizon/eloteroMan2

由于某种原因,GPS跟踪工作正常,我的供应商活动工作正常,但我无法访问我的主要活动。 如果我尝试访问我的主活动,它只是关闭应用程序。

在我的主活动的第 82 行上,我最初想要拥有它,所以如果用户允许 GPS 跟踪,它将返回到主活动屏幕,但是当我将其设置为 MainActivity 时.class它什么也不做。 所以我把它设置为VendorActivity.class它会将用户发送到VendorActivity。 但是当我在应用程序中点击以转到主屏幕时,它只会关闭应用程序。

我花了 2 天时间试图解决这个问题,但我无法确定修复程序在哪里。

如果有人有任何空闲时间并愿意帮助新的Android应用程序开发人员,将不胜感激。

这只是我在上课前正在做的一个有趣的副项目。 我以前从未使用过GPS定位。

根据清单文件,您的项目设置为MainActivity启动活动。这就是你开始的地方!但是,您也通过在两个位置呼叫finish()来删除任何返回路径。

简单的解决方法只是更改此代码:

if (checkAndRequestPermissions()){
finish();
return;
}

仅对以下代码

checkAndRequestPermissions();

并且还要删除切换到VendorActivityonRequestPermissionsResult()方法中的finish()。改变:

Intent i = new Intent(MainActivity.this, VendorActivity.class);
startActivity(i);
finish();

应该只是:

Intent i = new Intent(MainActivity.this, VendorActivity.class);
startActivity(i);

解释:

onCreate()方法的MainActivity中,您正在检查用户是否已使用该方法授予位置权限checkAndRequestPermissions()它是否在您简单退出程序true返回 - 熄灯!

if (checkAndRequestPermissions()){ //if this is true .. user has already granted permission then you kill the app! why?
finish();
return;
}

如果用户已授予权限,则checkAndRequestPermissions()返回true的方法。

private  boolean checkAndRequestPermissions() {
int permissionLocation = ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION);
List<String> listPermissionsNeeded = new ArrayList<>();
if (permissionLocation != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), REQUEST_ID_MULTIPLE_PERMISSIONS);
return false;
}
return true; //Returns true if permission has already been granted!!
}

如果用户尚未授予权限,则您请求该权限。因此,onRequestPermissionsResult()是使用请求的结果触发的。但是,如果用户授予您转到VendorActivity的权限,同时调用finish()简单地说,它会从 Activity 堆栈中删除MainActivity。在这种情况下,您正在显示VendorActivity,但点击后退按钮将杀死应用程序,因为您已经从堆栈中删除了MainActivity

如果用户拒绝授予您权限,您只需再次灰化他们以授予权限,或者您致电finish()以终止该应用程序

看起来你在 MainActivity 中调用 finish((。这将导致主活动被关闭。如果你去掉对 finish(( 的调用,MainActivity 将保留在堆栈中,当你按回去时,你将回到 MainActivity。

最新更新