首先要注意的 是到manifest 中添加访问网络的权限 其次是访问contentprovider要用this.getContentResolver().query(CitysProvider.URI_CITYS, null, null, null, null);
且oncreate方法只有在第一次程序运行执行 还要注册provoider
<provider
android:name="com.togic.settings.provider.CitysProvider"
android:authorities="com.togic.settings.provider.CitysProvider" /> ,下面的我的参考代码
package com.example.testprogress;
import java.util.ArrayList;
import com.togic.settings.provider.CitysProvider;
import com.togic.settings.util.CitysUtil;
import com.togic.settings.util.LogUtil;
import com.togic.settings.util.CitysUtil.CityInfo;
import com.togic.settings.util.CitysUtil.ProvinceInfo;
import android.app.Activity;
import android.content.ContentResolver;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ProgressBar;
public class MainActivity extends Activity {
// CitysProvider cp=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ProgressBar pb=(ProgressBar)findViewById(R.id.progress_bar);
// pb.setIndeterminate(true);
// pb.setVisibility(View.INVISIBLE);
this.getContentResolver().query(CitysProvider.URI_CITYS, null, null, null, null);
ContentResolver mResolver = this.getContentResolver();
// ArrayList<CityInfo> mCitys = new ArrayList<CityInfo>(32);
// ProvinceInfo prov=new ProvinceInfo("1","北京");
// LogUtil.d("data========"+cp.onCreate());
// CitysUtil.queryCitys(mResolver, mCitys, prov, true);
// LogUtil.d("mcitys==="+mCitys);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
// if(cp!=null)
// cp.closeDbHelper();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
package com.togic.settings.provider;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
//import com.togic.settings.R;
import com.togic.settings.provider.CitysProvider.Tables.City;
import com.togic.settings.provider.CitysProvider.Tables.Province;
import com.togic.settings.util.CommonUtil;
import com.togic.settings.util.LogUtil;
import com.togic.settings.util.CitysUtil;
import com.togic.settings.util.CitysUtil.CityInfo;
import com.togic.settings.util.CitysUtil.ProvinceInfo;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
/**
* @author mountains.liu@togic.com @date 2012-11-9
*/
public class CitysProvider extends ContentProvider {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "citys.db";
private static final String AUTHORITY = CitysProvider.class.getName();
private static final String TABLE_PROVINCE = "provinces";
private static final String TABLE_CITYS = "citys";
private static final String TABLE_CURR_CITY = "curr_city";
private static final int PROVINCES = 1;
private static final int PROVINCE = 2;
private static final int CITYS = 3;
private static final int CITY = 4;
private static final int CURR_CITYS = 5;
private static final int CURR_CITY = 6;
private static final UriMatcher sUriMatcher;
static {
sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sUriMatcher.addURI(AUTHORITY, "provinces", PROVINCES);
sUriMatcher.addURI(AUTHORITY, "provinces/#", PROVINCE);
sUriMatcher.addURI(AUTHORITY, "citys", CITYS);
sUriMatcher.addURI(AUTHORITY, "citys/#", CITY);
sUriMatcher.addURI(AUTHORITY, "curr_city", CURR_CITYS);
sUriMatcher.addURI(AUTHORITY, "curr_city/#", CURR_CITY);
LogUtil.v("WeatherProvider.AUTHORITY: " + AUTHORITY);
}
public static final Uri URI_PROVINCES = Uri.parse("content://" + AUTHORITY
+ "/" + TABLE_PROVINCE);
public static final Uri URI_CITYS = Uri.parse("content://" + AUTHORITY
+ "/" + TABLE_CITYS);
public static final Uri URI_CURRCITY = Uri.parse("content://" + AUTHORITY
+ "/" + TABLE_CURR_CITY);
private DatabaseHelper mHelper;
private SQLiteDatabase db;
private class DatabaseHelper extends SQLiteOpenHelper