I wrote a method(verifyUser) that checks if the user already exists in the database or not , but i get this error:
( java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase com.example.testapp.DatatBaseHelper.getReadableDatabase()' on a null object reference)
That's my ContentProvider Class:
public class TestProvider extends ContentProvider {
    private DatatBaseHelper helper;
    private SQLiteDatabase db;
    public static final String LOG_TAG = TestProvider.class.getSimpleName();
    private static final int test=1;
    private static final int test_id=2;
    private static final UriMatcher urim=new UriMatcher(UriMatcher.NO_MATCH);
    static{
        urim.addURI(Test.test.authority,Test.test.TABLE_NAME,test);
        urim.addURI(Test.test.authority,Test.test.TABLE_NAME+"/#",test_id);
    }
    @Override
    public boolean onCreate() {
        helper=new DatatBaseHelper(getContext());
        return false;
    }
    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
        int match=urim.match(uri);
      db=helper.getReadableDatabase();
        Cursor c;
        switch(match){
            case test:
                c=db.query(Test.test.TABLE_NAME,projection,selection,selectionArgs,null,null,sortOrder);
                break;
            case test_id:
                selection= Test.test.ID+"=?";
                selectionArgs=new String[]{String.valueOf(ContentUris.parseId(uri))};
                c=db.query(Test.test.TABLE_NAME,projection,selection,selectionArgs,null,null,sortOrder);
                break;
            default:
                throw new IllegalStateException("Cannot query form: " + uri);
        }
        return null;
    }
    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }
    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
         db=helper.getWritableDatabase();
        String email=values.getAsString(Test.test.EMAIL);
        int match=urim.match(uri);
        switch (match){
            case test:
          int   id=(int)(db.insert(Test.test.TABLE_NAME,null,values));
                uri= ContentUris.withAppendedId(uri, id);
        }
        return uri;
    }
    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
        return 0;
    }
    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
        return 0;
    }
    public boolean verifyUser(String email){
        SQLiteDatabase db=helper.getReadableDatabase();
        Cursor c;
        String pro[]={Test.test.ID};
        String select=Test.test.EMAIL+"=?";
        String args[]={email};
        c=db.query(Test.test.TABLE_NAME,pro,select,args,null,null,null);
        if(c.getCount()>0){
            return true;
        }
        return false;
    }
That's my datatbase class:
public class DatatBaseHelper extends SQLiteOpenHelper {
    public static final  String DB_NAME="dress.db";
    public static final int DB_VERSION=1;
    public DatatBaseHelper(Context c){
        super(c,DB_NAME,null,DB_VERSION);
    }
    private  String TABLE_CREATE= "CREATE TABLE " + test.TABLE_NAME+ "( "+
  test. ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"+ test.NAME+" TEXT NOT NULL,"+
   test. EMAIL+" TEXT NOT NULL,"+ test.PASSWORD+ " TEXT NOT NULL);";
        @Override
        public void onCreate(SQLiteDatabase db) {
    db.execSQL(TABLE_CREATE);
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }
 
     
    