在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
一直不能运行,求教高手

解决方案 »

  1.   

    package com.haii;import android.app.Activity;
    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);
            }
      }
      

  2.   

    import android.content.ContentProvider;
    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;
    }}
      

  3.   

    <?xml version="1.0" encoding="utf-8"?>
    <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>
      

  4.   


    这个类没有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是不是放在对应的包下面