错误:程序包PermissionUtils不存在 [英] error: package PermissionUtils does not exist

查看:210
本文介绍了错误:程序包PermissionUtils不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过我的应用程序找到用户的当前位置,我从Github复制了源代码,但我不知道它不会给我任何错误,只是这个。
这里是我所有库的代码,以防万一您错过了一个库。

android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;

导入android.Manifest;
导入android.content.pm.PackageManager;
导入android.os.Bundle;
导入android.support.annotation.NonNull;
导入android.support.v4.app.ActivityCompat;
导入android.support.v4.content.ContextCompat;
导入android.support.v7.app.AppCompatActivity;
导入android.widget.Toast;

公共类位置扩展AppCompatActivity
实现
OnMyLocationButtonClickListener,
OnMapReadyCallback,
ActivityCompat.OnRequestPermissionsResultCallback {

/ **
*请求位置权限请求的代码。
*
* @see #onRequestPermissionsResult(int,String [],int [])
* /
private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;

/ **
*表示请求的权限是否在
返回后被拒绝的标志。{@link #onRequestPermissionsResult(int,String [],int [])} 。
* /
private boolean mPermissionDenied = false;

私有GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location);

SupportMapFragment mapFragment =
(SupportMapFragment)getSupportFragmentManager()。findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap map){
mMap = map;

mMap.setOnMyLocationButtonClickListener(this);
enableMyLocation();
}

/ **
*如果已授予罚款位置权限,则启用我的位置图层。
* /
private void enableMyLocation(){
if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED){
/ /访问该位置的权限丢失。
PermissionUtils.requestPermission(this,LOCATION_PERMISSION_REQUEST_CODE,
Manifest.permission.ACCESS_FINE_LOCATION,true);
} else if(mMap!= null){
//访问位置已被授予应用程序。
mMap.setMyLocationEnabled(true);



@Override
public boolean onMyLocationButtonClick(){
Toast.makeText(this,MyLocation button clicked,Toast.LENGTH_SHORT) 。显示();
//返回false,以便我们不消耗事件并且默认行为仍然发生
//(相机动画到用户的当前位置)。
返回false;


$ b @Override
public void onRequestPermissionsResult(int requestCode,@NonNull String []权限,
@NonNull int [] grantResults){
if(requestCode!= LOCATION_PERMISSION_REQUEST_CODE){
return;
}

if(PermissionUtils.isPermissionGranted(permissions,grantResults,
Manifest.permission.ACCESS_FINE_LOCATION)){
//启用我的位置图层,如果权限有被授予。
enableMyLocation();
} else {
//片段恢复时显示丢失的权限错误对话框。
mPermissionDenied = true; ();
}
}

@Override
保护无效的onResumeFragments(){
super.onResumeFragments();
if(mPermissionDenied){
//权限未被授予,显示错误对话框。
showMissingPermissionError();
mPermissionDenied = false;
}
}

/ **
*显示一个对话框,其中包含错误消息,说明位置权限丢失。
* /
private void showMissingPermissionError(){
PermissionUtils.PermissionDeniedDialog
.newInstance(true).show(getSupportFragmentManager(),dialog);
}

}


解决方案

这是因为您的示例代码是Google教程的一部分,并且不完整。 此处是位于同一项目中的GitHub上的PermissionUtilsCode


I want to find the current location of the user through my app and I copied the source code from Github and I don't know it does not give me any error but this one. Here's my code with all the libraries in case you think I have missed a library.

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class location extends AppCompatActivity
        implements
        OnMyLocationButtonClickListener,
        OnMapReadyCallback,
        ActivityCompat.OnRequestPermissionsResultCallback {

    /**
     * Request code for location permission request.
     *
     * @see #onRequestPermissionsResult(int, String[], int[])
     */
    private static final int LOCATION_PERMISSION_REQUEST_CODE = 1;

    /**
     * Flag indicating whether a requested permission has been denied after returning in
     * {@link #onRequestPermissionsResult(int, String[], int[])}.
     */
    private boolean mPermissionDenied = false;

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location);

        SupportMapFragment mapFragment =
                (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {
        mMap = map;

        mMap.setOnMyLocationButtonClickListener(this);
        enableMyLocation();
    }

    /**
     * Enables the My Location layer if the fine location permission has been granted.
     */
    private void enableMyLocation() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            // Permission to access the location is missing.
            PermissionUtils.requestPermission(this, LOCATION_PERMISSION_REQUEST_CODE,
                    Manifest.permission.ACCESS_FINE_LOCATION, true);
        } else if (mMap != null) {
            // Access to the location has been granted to the app.
            mMap.setMyLocationEnabled(true);
        }
    }

    @Override
    public boolean onMyLocationButtonClick() {
        Toast.makeText(this, "MyLocation button clicked", Toast.LENGTH_SHORT).show();
        // Return false so that we don't consume the event and the default behavior still occurs
        // (the camera animates to the user's current position).
        return false;
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        if (requestCode != LOCATION_PERMISSION_REQUEST_CODE) {
            return;
        }

        if (PermissionUtils.isPermissionGranted(permissions, grantResults,
                Manifest.permission.ACCESS_FINE_LOCATION)) {
            // Enable the my location layer if the permission has been granted.
            enableMyLocation();
        } else {
            // Display the missing permission error dialog when the fragments resume.
            mPermissionDenied = true;
        }
    }

    @Override
    protected void onResumeFragments() {
        super.onResumeFragments();
        if (mPermissionDenied) {
            // Permission was not granted, display error dialog.
            showMissingPermissionError();
            mPermissionDenied = false;
        }
    }

    /**
     * Displays a dialog with error message explaining that the location permission is missing.
     */
    private void showMissingPermissionError() {
        PermissionUtils.PermissionDeniedDialog
                .newInstance(true).show(getSupportFragmentManager(), "dialog");
    }

}

解决方案

This is because your sample code is part from Google tutorials and is not complete. Here is the PermissionUtilsCode located in GitHub in the same project

这篇关于错误:程序包PermissionUtils不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆