在我的应用程序中,我想确定用户的当前位置.但是我在这方面有几个问题:
我该怎么做才能让我的内容提供商返回带有记录数的_count列?文档说这是自动的,但也许它只涉及一些内置的内容提供者.对数据库运行查询似乎不会返回它.
我正在使用Google Maps API V1.我有这个错误:
java.lang.IllegalArgumentException: provider doesn't exisit: null
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = locationManager.getBestProvider(criteria, true);
if (provider != null)
{
startTime = System.currentTimeMillis();
geoLocTimeOutTask = new GeoLocTimeOutTask();
geoLocTimeOutTask.execute();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
}
else
{
geoLocCallbackObj.geoLocationCallback(tagCallback);
}
Run Code Online (Sandbox Code Playgroud)
我理解错误,我的问题是,设备给我这个错误吗?我怎么能避免这个呢?
我正在尝试让我的ContentResolver运行此查询:
select * from myTable limit 1 offset 2
Run Code Online (Sandbox Code Playgroud)
ContentResolver中唯一的查询方法是:
resolver.query(uri, projection, selection, selectionArgs, sortOrder);
Run Code Online (Sandbox Code Playgroud)
我试过了:
final Cursor c = resolver.query(
MyTable.CONTENT_URI,
MyTable.PROJECTION,
" ? ?",
new String[] {"1", "2"},
null);
Run Code Online (Sandbox Code Playgroud)
这只是抛出一个IllegaLArgumentException.实现这一目标的正确方法是什么?
我有这个代码来获得最好的提供商
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(criteria, true);
Location mostRecentLocation = lm.getLastKnownLocation(provider);
if(mostRecentLocation != null) {
latid=mostRecentLocation.getLatitude();
longid=mostRecentLocation.getLongitude();
}
lm.requestLocationUpdates(provider, 1, 0, locationListener);
Run Code Online (Sandbox Code Playgroud)
然后是听众
private class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
latid = loc.getLatitude();
longid = loc.getLongitude();
// if(loc.hasAccuracy()==true){
accuracyd = loc.getAccuracy();
String providershown = loc.getProvider();
accuracy.setText("Location Acquired. Accuracy:"
+ Double.toString(accuracyd) + "m\nProvider: "+providershown);
accuracy.setBackgroundColor(Color.GREEN);
// }
userinfo=usernamevalue+"&"+Double.toString(latid)+"&"+Double.toString(longid); …Run Code Online (Sandbox Code Playgroud) 我知道Android中没有官方支持内容:// sms / provider.尽管如此,我想知道是否存在一些常用的约定,这些约定出现在"type"列中,可以从content:// sms / queries返回.
例如,我知道类型"1"和"2"通常分别代表"传入"和"传出".是否还有其他常用的类型值?例如,我有时会看到类型"20".
提前感谢任何有关此信息或讨论的指示.
我正在尝试使用我的数据库进行测试ProviderTestCase2<T>.我可以看到正在创建测试数据库.因此我认为,测试内容提供商应该使用测试数据库.但是一旦我尝试任何针对MockContentResolver(或创建的newResolverWithContentProviderFromSql)的调用,我得到一个UnsupportedOperationException.这是MockContentResolver记录的正常行为.因此,我对ProviderTestCase2的目的有点不确定.
您如何测试您的内容提供商?
谢谢
在我的Android应用程序中,我想使用GPS提供商和网络提供商进行位置更新5秒钟.首先,我想使用GPS提供商(因为它提供了准确的结果),如果GPS提供商返回纬度和经度为0.0和0.0,那么我想使用网络提供商,但我不想同时使用这两个提供商同时.有什么建议?
在尝试安装我的Android应用程序时,我曾让用户抱怨"重复的提供程序权限"错误.我最初认为它可能是旧版本干扰新版本,但他们之前从未安装过该应用程序.关于可能导致这种情况的任何建议?
是否可以以编程方式打开设备上的LocationProviders(GPS提供商/网络提供商),如果它已关闭?