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);
解释:
在 MainActivity
的 onCreate()
方法中,您正在检查用户是否已使用方法 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()
终止应用程序
为了方便访问这里是我的 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);
解释:
在 MainActivity
的 onCreate()
方法中,您正在检查用户是否已使用方法 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()
终止应用程序