GPS 追踪器无法进入我的 Activity 主屏幕的问题

Issues with GPS Tracker not going to my Main Activity Screen

为了方便访问这里是我的 GitHub Link

https://github.com/PoetryHorizon/eloteroMan2

出于某种原因,GPS 跟踪工作正常,我的 VendorActivity 工作正常,但我无法访问我的 Main Activity。如果我尝试访问我的 MainActivity,它只会关闭应用程序。

在我的 MainActivity 的第 82 行,我本来想拥有它,所以如果用户允许 GPS 跟踪,它将 return 到 MainActivity 屏幕,但是当我设置它是 MainActivity.class 它什么都不做。所以我将它设置为 VendorActivity.class 并将用户发送到 VendorActivity 就好了。但是当我在应用程序中返回以转到主屏幕时,它只是关闭了应用程序。

我花了 2 天时间试图解决这个问题,但我无法确定修复的位置。

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

这只是我在 class 开始之前正在进行的一个有趣的副业项目。我以前从未使用过 GPS 定位。

您似乎在 MainActivity 中调用 finish()。这将导致 MainActivity 关闭。如果你取出对finish()的调用,MainActivity会一直留在栈中,当你按下回车时,你会回到MainActivity。

根据清单文件,您的项目设置为 MainActivity 是您的启动项 activity。那就是你开始的地方!但是您还通过在两个位置调用 finish() 来移除任何返回路径。

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

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

仅此一行代码:

checkAndRequestPermissions();

并且还要删除 onRequestPermissionsResult() 方法中的 finish(),然后切换到 VendorActivity。变化:

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

应该只是:

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

解释:

MainActivityonCreate() 方法中,您正在检查用户是否已使用方法 checkAndRequestPermissions() 授予位置权限,如果 returns true你简单地退出你的程序——熄灯!

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

方法checkAndRequestPermissions() returns 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() 终止应用程序