在prividerSQLiteActivity.java中是这样的
getIntent().setData(Uri.parse("content://com.haii.provider.name/test"));
在androidManifest.xml中这样设置:
<provider android:name="Testprovider"
android:authorities="com.haii.provider.name"/>
然后在
package com.haii;包中
log如下报错:
11-10 12:37:12.803: ERROR/AndroidRuntime(556): java.lang.RuntimeException: Unable to get provider com.haii.Testprovider: java.lang.ClassNotFoundException: com.haii.Testprovider in loader dalvik.system.PathClassLoader@43946e58
一直不能运行,求教高手
getIntent().setData(Uri.parse("content://com.haii.provider.name/test"));
在androidManifest.xml中这样设置:
<provider android:name="Testprovider"
android:authorities="com.haii.provider.name"/>
然后在
package com.haii;包中
log如下报错:
11-10 12:37:12.803: ERROR/AndroidRuntime(556): java.lang.RuntimeException: Unable to get provider com.haii.Testprovider: java.lang.ClassNotFoundException: com.haii.Testprovider in loader dalvik.system.PathClassLoader@43946e58
一直不能运行,求教高手
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;public class ProviderSQLiteActivity extends Activity {
OnClickListener listener_add=null;
OnClickListener listener_update=null;
OnClickListener listener_delete=null;
OnClickListener listener_clear=null;
Button button_add;
Button button_update;
Button button_delete;
Button button_clear;
//DBConnection helper;
public int id_this;
public interface UserSchema{
String TABLE_NAME="Users";
String ID="_id";
String USER_NAME="user_name";
String ADDRESS="address";
String TELEPHONE="telephone";
String MAIL_ADDRESS="mail_address";
}
/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getIntent().setData(Uri.parse("content://com.haii.provider.name"));
final Uri uri_test=getIntent().getData();
setContentView(R.layout.main);
final EditText mEditText01=(EditText)findViewById(R.id.editText1);
final EditText mEditText02=(EditText)findViewById(R.id.editText2);
final EditText mEditText03=(EditText)findViewById(R.id.editText3);
final EditText mEditText04=(EditText)findViewById(R.id.editText4);
//helper=new DBConnection(this);
// final SQLiteDatabase db=helper.getWritableDatabase();
final String[] FROM={
UserSchema.ID,
UserSchema.USER_NAME,
UserSchema.TELEPHONE,
UserSchema.ADDRESS,
UserSchema.MAIL_ADDRESS
};
// Cursor c=db.query(UserSchema.TABLE_NAME, new String[]{UserSchema.USER_NAME}, null,null,null,null,null);
Cursor c=managedQuery(uri_test,new String[]{UserSchema.USER_NAME},null,null,null);
c.moveToFirst();
CharSequence[] list=new CharSequence[c.getCount()];
for(int i=0;i<list.length;i++){
list[i]=c.getString(0);
c.moveToNext();
}
c.close();
Spinner spinner=(Spinner)findViewById(R.id.spinner1);
spinner.setAdapter(new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item,list));
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){ @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String user_name=((Spinner)parent).getSelectedItem().toString();
Cursor c=managedQuery(uri_test,FROM,"user_name='"+user_name+"'",null,null);
//Cursor c=db.query("Users", FROM, "user_name='"+user_name+"'", null,null,null,null);
c.moveToFirst();
id_this=Integer.parseInt(c.getString(0));
String user_name_this=c.getString(1);
String telephone_this=c.getString(2);
String address_this=c.getString(3);
String mail_address_this=c.getString(4);
c.close();
mEditText01.setText(user_name_this);
mEditText02.setText(telephone_this);
mEditText03.setText(address_this);
mEditText04.setText(mail_address_this);
// TODO Auto-generated method stub
} @Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
listener_add=new OnClickListener(){ @Override
public void onClick(View v) {
ContentValues values=new ContentValues();
values.put(UserSchema.USER_NAME, mEditText01.getText().toString());
values.put(UserSchema.TELEPHONE, mEditText02.getText().toString());
values.put(UserSchema.ADDRESS, mEditText03.getText().toString());
values.put(UserSchema.MAIL_ADDRESS, mEditText04.getText().toString());// TODO Auto-generated method stub
//SQLiteDatabase db=helper.getWritableDatabase();
//db.insert(UserSchema.TABLE_NAME, null, values);
//db.close();
getContentResolver().insert(uri_test, values);
onCreate(savedInstanceState);
}
};
listener_update=new OnClickListener(){ @Override
public void onClick(View v) {
ContentValues values=new ContentValues();
values.put(UserSchema.USER_NAME, mEditText01.getText().toString());
values.put(UserSchema.TELEPHONE, mEditText02.getText().toString());
values.put(UserSchema.ADDRESS, mEditText03.getText().toString());
values.put(UserSchema.MAIL_ADDRESS, mEditText04.getText().toString());
String where=UserSchema.ID+" = "+id_this;// TODO Auto-generated method stub
//SQLiteDatabase db=helper.getWritableDatabase();
//db.update(UserSchema.TABLE_NAME, values, where, null);
//db.close();
getContentResolver().update(uri_test, values, where, null);
onCreate(savedInstanceState);// TODO Auto-generated method stub
}
};
listener_delete=new OnClickListener(){ @Override
public void onClick(View v) {
String where=UserSchema.ID+" = "+id_this;
//SQLiteDatabase db=helper.getWritableDatabase();
//db.delete(UserSchema.TABLE_NAME, where, null);
//db.close();
getContentResolver().delete(uri_test, where,null);// TODO Auto-generated method stub
onCreate(savedInstanceState);
}
};
listener_clear=new OnClickListener(){ @Override
public void onClick(View v) {
mEditText01.setText("");
mEditText02.setText("");
mEditText03.setText("");
mEditText04.setText("");
// TODO Auto-generated method stub
}
};
button_add=(Button)findViewById(R.id.button1);
button_add.setOnClickListener(listener_add);
button_update=(Button)findViewById(R.id.button2);
button_update.setOnClickListener(listener_update);
button_delete=(Button)findViewById(R.id.button3);
button_delete.setOnClickListener(listener_delete);
button_clear=(Button)findViewById(R.id.button4);
button_clear.setOnClickListener(listener_clear);
}
}
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;public class TestProvider extends ContentProvider {
private static class DatabaseHelper extends SQLiteOpenHelper{
private static final String DATABASE_NAME="PhoneContentDB1";
private static final int DATABASE_VERSION=1;
public DatabaseHelper(Context ctx) {
super(ctx,DATABASE_NAME,null,DATABASE_VERSION);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(SQLiteDatabase db) {
String sql="CREATE TABLE "+UserSchema.TABLE_NAME
+ " ("+UserSchema.ID+" INTEGER primary key autoincrement, "
+UserSchema.USER_NAME+" text not null, "
+UserSchema.TELEPHONE+" text not null, "
+UserSchema.ADDRESS+" text not null, "
+UserSchema.MAIL_ADDRESS+" text not null "+");";
db.execSQL(sql);// TODO Auto-generated method stub
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS test");
onCreate(db);
// TODO Auto-generated method stub
}
}
static DatabaseHelper databaseHelper;
public interface UserSchema{
String TABLE_NAME="Users";
String ID="_id";
String USER_NAME="user_name";
String ADDRESS="address";
String TELEPHONE="telephone";
String MAIL_ADDRESS="mail_address";
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
SQLiteDatabase db=databaseHelper.getWritableDatabase();
db.delete(UserSchema.TABLE_NAME,selection, null);// TODO Auto-generated method stub
db.close();
return 0;
} @Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
} @Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db=databaseHelper.getWritableDatabase();
db.insert(UserSchema.TABLE_NAME,null,values);
db.close();// TODO Auto-generated method stub
return null;
} @Override
public boolean onCreate() {
databaseHelper= new DatabaseHelper(getContext());
// TODO Auto-generated method stub
return true;
} @Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
SQLiteDatabase db=databaseHelper.getReadableDatabase();
SQLiteQueryBuilder qb=new SQLiteQueryBuilder();
qb.setTables(UserSchema.TABLE_NAME);
Cursor c=qb.query(db, projection, selection, selectionArgs, null, null, null);
// TODO Auto-generated method stub
return c;
} @Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
SQLiteDatabase db=databaseHelper.getWritableDatabase();
db.update(UserSchema.TABLE_NAME,values, selection, null);
db.close();// TODO Auto-generated method stub
return 0;
}}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.haii"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/icon" android:label="@string/app_name">
<provider android:name="Testprovider"
android:authorities="com.haii.provider.name"/>
<activity android:name=".ProviderSQLiteActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </application>
</manifest>
这个类没有package 吗?那么你根据Manifest.xml里面的配置,<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.haii" android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/icon" android:label="@string/app_name">
<provider android:name="Testprovider" android:authorities="com.haii.provider.name"/>拼起来是com.haii.TestProvider,检查一下你的TestProvider是不是放在对应的包下面