android自定义内容提供者

时间:2011-03-23 22:10:54

标签: android android-contentprovider

我编写了自定义contentprovider,它在sqlite3中使用单个表'user_authentication'创建数据库。

虽然已经在各自的onCreate()方法上创建了db和table,但我在重写insert方法中得到NullPointerException。以下是方法:

public Uri insert(Uri uri, ContentValues initialvalues){
         SQLiteDatabase sqlitedb = dbHelper.getWritableDatabase();
         if(sUriMatcher.match(uri)!= TABLE){
             throw new IllegalArgumentException("Unkown Uri"+uri);
         }

         ContentValues values;
         if(initialvalues != null){
             values = new ContentValues(initialvalues);
         }
         else{
             values = new ContentValues();
         }

         long rowId = sqlitedb.insert(AUTHENTICATION_TABLE_NAME, "", values);

             if(rowId>0){
                 Uri uril = ContentUris.withAppendedId(User.CONTENT_URI, rowId);
                 getContext().getContentResolver().notifyChange(User.CONTENT_URI, null);
                 sqlitedb.close();
                 return uril;
             }

             throw new SQLException("Failed to insert row into User_Authentication : " + uri);


     }

在调试时,我看到该表正在插入'values',但当它到达getContext()时,它返回null,因此错误。

我想知道为什么getContext()正在撤销null,因为自定义contentprovider类扩展了android.content.ContentProvider;

有谁可以帮我解决这个问题。顺便说一句,我使用2.3 sdk

谢谢, Raja Chandra Rangineni

1 个答案:

答案 0 :(得分:0)

getApplicationContext()应该起作用而不是getContext()。