有个关于ContentProvider的问题,
照着别人的样本,做了个ContentProvider的小程序,但是只能打在一个包里才行。
我的问题,怎样将这个ContentProvider做成一个jar,或者其他什么的,提供给另外的项目去使用哪我单独做的只包含ContentProvider的项目,编译出问题,说需要Actitvity平台是win xp+Eclipse,谢谢先

解决方案 »

  1.   

    Android提供了ContentProvider,一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProviders是以类似数据库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,只不过是采用URI来表示外界需要访问的“数据库”。至于如何从URI中识别出外界需要的是哪个“数据库”,这就是Android底层需要做的事情了,不在此详细说。简要分析下ContentProvider向外界提供数据操作的接口:query(Uri, String[], String, String[], String)insert(Uri, ContentValues)update(Uri, ContentValues, String, String[])delete(Uri, String, String[]) 
    这些操作与数据库的操作基本上完全一样,在此不详细说,具体的解析可以参考Android Sqlite解析篇中的详细说明。需要特殊说明的地方是URI:
    在URI的D部分可能包含一个_ID ,这个应该出现在SQL语句中的,可以以种特殊的方式出现,这就要求我们在提供数据的时候,需要来额外关注这个特殊的信息。Android  SDK推荐的方法是:在提供数据表字段中包含一个ID,在创建表时INTEGER PRIMARY KEY AUTOINCREMENT标识此ID字段。
    我在网上找的  LZ看看吧
      

  2.   

    在其他应用程序中使用的话 如:
    ContentResolver cr = context.getContentResolver();
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

    while(cursor.moveToNext())
    {
    //联系人姓名
    String name = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));
    //头像
    String photoId = cursor.getString(cursor.getColumnIndex(PhoneLookup.PHOTO_ID));

    //联系人号
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
      

  3.   

    ContentProvider为什么只能在一个包里?
    你直接做成apk就行了。
      

  4.   

    先谢谢各位。
    我可能没有表达清楚,我已经可以实现将ContentProvider,一个使用这个ContentProvider的Activity,
    但我目前只能是全放在一个项目里,生成一个apk;
    我希望是将ContentProvider放在一个单独的包,在其他的项目中引用这个包中的ContentProvider。
    我的问题是,我不能将这个只有ContentProvider的项目做成一个apk之类的东东,谁能知道?