我的日志中既没有拒绝许可,也没有授予许可。
但是Log.v(“垃圾邮件”,"1");正在工作。
为了使代码工作,类必须是运行的"MainActivity“吗?
这是使用权限的类。
另一个问题是requestPermissions没有运行,下面的代码也没有运行。知道这会是什么吗?
package com.project.backgroundprocesstest;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import org.json.JSONObject;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/**
* Created by Alex on 14/09/2016.
*/
public class LocationControl extends AppCompatActivity{
final int REQUEST_ACCESS_FINE_LOCATION = 5;
private Context context;
private LocationManager locationManager;
public LocationControl(Context context){
this.context = context;
this.locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if(ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
Log.v("SPAM", "1");
this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new MyLocationListener(context));
}
}
public LocationManager getLocationManager(){
return locationManager;
}
public String getLocation(){
Log.v("SPAM", "1");
if(ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.v("CheckPermission","Permission Denied");
ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_ACCESS_FINE_LOCATION);
Log.v("CheckPermission","It Does run");
}
else{
Log.v("CheckPermission","Permission Granted");
Location location = this.locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitudinal = location.getLongitude();
double latitudinal = location.getLatitude();
String cityName = findCity(location);
Date date = new Date();
return setJSON(longitudinal,latitudinal,cityName,date);
}
return null;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults){
switch(requestCode){
case REQUEST_ACCESS_FINE_LOCATION: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
Log.d("CheckPermission","User Denisd Permission");
}
return;
}
}
}
public String setJSON(double lng, double lat, String place, Date date) {
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject();
jsonObject.put("longitudinal", lng);
jsonObject.put("latitudinal", lat);
jsonObject.put("name", place);
jsonObject.put("created", date);
} catch (Exception e) {
Log.e("Error", "JSON ERROR");
}
if(jsonObject != null)
return jsonObject.toString();
else
return null;
}
private String findCity(Location loc){
String cityName = null;
Geocoder gcd = new Geocoder(context, Locale.getDefault());
// IF any addresses which belong to the Longitudinal and Latitudinal are found,
// set cityName and print it
List<Address> addresses;
try{
addresses = gcd.getFromLocation(loc.getLatitude(),loc.getLongitude(),1 );
if(addresses.size()>0){
System.out.println(addresses.get(0).getLocality());
cityName = addresses.get(0).getLocality();
}
}catch(IOException e){
e.printStackTrace();
}
return cityName;
}
private String locationToString(Location location){
return Location.convert(location.getLatitude(),Location.FORMAT_DEGREES)+" " + Location.convert(location.getLongitude(),Location.FORMAT_DEGREES);
}
}编辑:日志或调试中没有出现错误。
发布于 2022-02-01 03:23:16
您可以调用checkCallingPermission (permission) of Context代替
https://stackoverflow.com/questions/39504025
复制相似问题