首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CheckSelfPermission()不使用API 24运行

CheckSelfPermission()不使用API 24运行
EN

Stack Overflow用户
提问于 2016-09-15 06:00:16
回答 1查看 571关注 0票数 0

我的日志中既没有拒绝许可,也没有授予许可。

但是Log.v(“垃圾邮件”,"1");正在工作。

为了使代码工作,类必须是运行的"MainActivity“吗?

这是使用权限的类。

另一个问题是requestPermissions没有运行,下面的代码也没有运行。知道这会是什么吗?

代码语言:javascript
复制
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);
    }
}

编辑:日志或调试中没有出现错误。

EN

回答 1

Stack Overflow用户

发布于 2022-02-01 03:23:16

您可以调用checkCallingPermission (permission) of Context代替

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39504025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档