最近在写一个模拟手机定位信息的app,但是遇到一些问题,一打开模拟定位,app就闪退,再次分享给大家,看看大家有没有妙计帮忙指点迷津。
问题点:
- 当provider为GPS时,方法 operateTestProvider();没成功。。
- 当provider为Network时,方法operateTestProvider();成功,但是mock.pushLocation(Double.parseDouble(latitude.getText().toString()),
Double.parseDouble(longitude.getText().toString()), providerName, locationManager);
不成功,
纠结了很久不知道为什么。权限也有。
码云仓库如下:模拟打卡源代码
源码如下:
package com.example.myapplication1;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
MockLocationProvider mock;
Button startLocation, stopLocation;
EditText longitude, latitude;
TextView mockStatus;
String providerName = LocationManager.GPS_PROVIDER;
boolean hasAddTestProvider = false;
boolean canMockPosition = false;
private static final String TAG = "GPS_Test";
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
longitude = findViewById(R.id.editText);
latitude = findViewById(R.id.editText2);
startLocation = findViewById(R.id.button);
stopLocation = findViewById(R.id.button2);
mockStatus = findViewById(R.id.textView3);
startLocation.setOnClickListener(view -> {
startLocation.setEnabled(false);
stopLocation.setEnabled(true);
if (canMockPosition