Java GPS跟踪器未进入我的主活动屏幕的问题
为了方便访问,这里是我的GitHub链接 出于某种原因,GPS跟踪工作正常,我的供应商活动正常,但我无法访问我的主要活动。如果我尝试访问MainActivity,它只会关闭应用程序 在MainActivity的第82行,我最初希望使用它,因此如果用户允许GPS跟踪,它将返回到MainActivity屏幕,但当我将其设置为MainActivity.class时,它不会执行任何操作。因此,我将其设置为VendorActivity.class,它会将用户发送到VendorActivity。但当我在应用程序中回击以转到主屏幕时,它只是关闭应用程序 我花了两天的时间试图弄明白这一点,但我无法确定修复的位置 如果有人有空闲时间并且愿意帮助新的Android应用程序开发人员,我们将不胜感激Java GPS跟踪器未进入我的主活动屏幕的问题,java,android,android-gps,Java,Android,Android Gps,为了方便访问,这里是我的GitHub链接 出于某种原因,GPS跟踪工作正常,我的供应商活动正常,但我无法访问我的主要活动。如果我尝试访问MainActivity,它只会关闭应用程序 在MainActivity的第82行,我最初希望使用它,因此如果用户允许GPS跟踪,它将返回到MainActivity屏幕,但当我将其设置为MainActivity.class时,它不会执行任何操作。因此,我将其设置为VendorActivity.class,它会将用户发送到VendorActivity。但当我在应
这只是我在上课前正在做的一个有趣的项目。我以前从未使用过GPS定位 看起来您正在MainActivity中调用finish()。这将导致MainActivity关闭。如果调用finish(),MainActivity将保留在堆栈中,当您按back时,您将返回MainActivity。根据清单文件,您的项目设置为
MainActivity
是您的启动活动。这就是你的出发点!但您也可以通过在两个位置调用finish()
来删除任何返回路径
简单的解决方法就是更改以下代码:
if (checkAndRequestPermissions()){
finish();
return;
}
要仅显示这一行代码,请执行以下操作:
checkAndRequestPermissions();
以及在切换到供应商活动的onRequestPermissionsResult()方法中删除finish()
。更改:
Intent i = new Intent(MainActivity.this, VendorActivity.class);
startActivity(i);
finish();
应该是:
Intent i = new Intent(MainActivity.this, VendorActivity.class);
startActivity(i);
解释:
在MainActivity
中的onCreate()
方法中,您正在检查用户是否使用方法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!!
}
private boolean checkAndRequestPermissions(){
int permissionLocation=ContextCompat.checkSelfPermission(这是Manifest.permission.ACCESS\u FINE\u位置);
List ListPermissionsNeed=new ArrayList();
if(permissionLocation!=已授予PackageManager.PERMISSION){
listPermissionsNeed.add(Manifest.permission.ACCESS\u FINE\u位置);
}
如果(!ListPermissionsNeed.isEmpty()){
ActivityCompat.requestPermissions(此,ListPermissionsNeed.toArray(新字符串[ListPermissionsNeed.size()),请求\u ID\u多个\u权限);
返回false;
}
return true;//如果已授予权限,则返回true!!
}
如果用户未授予权限,则您请求该权限。因此,onRequestPermissionsResult()
将与请求结果一起触发。但是,如果用户授予您进入VendorActivity
的权限,同时调用finish()
,简单地说,这将从活动堆栈中删除MainActivity
。在这种情况下,您显示的是VendorActivity
,但点击后退按钮将终止应用程序,因为您已经从堆栈中删除了MainActivity
如果用户拒绝授予您权限,您只需再次将其灰化以授予权限,或者您调用finish()
以杀死该应用程序Awesome!谢谢我会用它做实验!另外,在用户接受GPS跟踪后,是否可以直接进入我的主活动屏幕而不必进入供应商活动屏幕?你是最好的!非常感谢。现在可以了!谢谢你抽出时间来帮助我!我真的很感激!!!!我们都从某个地方开始学习。很高兴我能帮你找到正确的方向。快乐编码。