我需要创建一个可以模拟位置的测试应用程序。单击按钮时,需要将文本框中提供的纬度和经度值设置为模拟位置。我正在尝试使用融合的位置提供程序API以简单的方式构建此文件]
Location mockLocation = new Location("flp"); mockLocation.setLatitude(12); mockLocation.setLongitude(82); mockLocation.setAccuracy(1.0f); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); } mockLocation.setTime(new Date().getTime()); Criteria criteria = new Criteria(); criteria.setAccuracy( Criteria.ACCURACY_FINE ); String provider = locationManager.getBestProvider( criteria, true ); if ( provider == null ) { Log.e( "", "No location provider found!" ); return; } // provider and LocationManager.GPS_PROVIDER are same - "gps" locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, mockLocation); // --> I am getting exception here
我在清单文件中授予了所有可能的权限:
ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ALLOW_MOCK_LOCATIONS ACCESS_MOCK_LOCATION
还可以在设置中手动启用开发人员选项,应用程序权限和模拟位置提供者应用程序。
我正在获取setTestProviderLocation之外的内容:
java.lang.IllegalStateException:无法执行以下方法android:onClick atandroidx.appcompat.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)在android.view.View.performClick(View.java:6266)处android.view.View $ PerformClick.run(View.java:24730)在android.os.Handler.handleCallback(Handler.java:793)位于android.os.Handler.dispatchMessage(Handler.java:98)在android.os.Looper.loop(Looper.java:173)在android.app.ActivityThread.main(ActivityThread.java:6698)在java.lang.reflect.Method.invoke(本机方法)位于com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)导致创建人:java.lang.reflect.InvocationTargetException在java.lang.reflect.Method.invoke(本机方法)位于androidx.appcompat.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)... 9更多原因:java.lang.IllegalArgumentException:提供者android.os.Parcel.readException(Parcel.java:1955)处的“ gps”未知android.os.Parcel.readException(Parcel.java:1897)在android.location.ILocationManager $存根$ Proxy.setTestProviderLocation(ILocationManager.java:1340)在android.location.LocationManager.setTestProviderLocation(LocationManager.java:1305)
任何解决此问题的方法?
感谢,拉吉
我需要创建一个可以模拟位置的测试应用程序。单击按钮时,需要将文本框中提供的纬度和经度值设置为模拟位置。我正在尝试...
由于Android 10