首页 > 解决方案 > 为什么 Android Studio 构建找不到符号变量 MockPackageManager?

问题描述

在这里,我想找到经度和纬度并将其显示到 xml 中。

package com.example.adeeb.gamecom;
import android.Manifest;
import android.content.pm.PackageManager;
 import android.location.LocationListener;
 import android.location.LocationManager;
 import android.support.v4.app.ActivityCompat;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity  {

Button btnShowLocation;
private static final int REQUEST_CODE_PERMISSION = 2;
String mPermission  = Manifest.permission.ACCESS_FINE_LOCATION;
GPSTracker gps;
TextView location;

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

        if(ActivityCompat.checkSelfPermission(this,mPermission)!= 
         MockPackageManager.PERMISSION_GRANTED ){

            ActivityCompat.requestPermissions(this,new String[] 
              {mPermission},REQUEST_CODE_PERMISSION);
        }


    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

    btnShowLocation = (Button) findViewById(R.id.button);
    btnShowLocation.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View V)
        {
            gps = new GPSTracker(MainActivity.this);
            location = (TextView) findViewById(R.id.locationtext);
            if(gps.canGetLocation())
            {
                double latitude = gps.getLatitude();
                double longitude = gps.getLongitude();
                location.setText(latitude+" "+longitude);

            }

            else
            {
                gps.showSettingsAlert();
            }
        }
    });
}

为什么编译器会给出错误找不到符号变量 MockPackageManager。如果我使用 packagemanager 应用程序不显示经度和纬度。我该如何解决这个问题?

标签: javaandroid

解决方案


原因是 MockManager 是一个(已弃用)用于模拟包管理器行为的测试类。

当我将 Target API 更改为 28 时,我遇到了类似的问题。下面给出的代码对我来说效果很好。

 try {
        if (ActivityCompat.checkSelfPermission(this, mPermission)
                != PackageManager.PERMISSION_GRANTED) {

            ActivityCompat.requestPermissions(this, new String[]{mPermission},
                    REQUEST_CODE_PERMISSION);


        }
    } catch (Exception e) {
        e.printStackTrace();
    }

推荐阅读