Prac 19
Prac 19
PRACTICAL NO: 19
X. Exercise
1. Write a program to create your own content provider to insert and access data in android
application.
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:padding="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter Name Below!"
android:textColor="@color/black"
android:textSize="20sp"
android:layout_marginTop="30dp" />
<EditText
android:id="@+id/txtName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:layout_marginTop="10dp" />
<Button
android:id="@+id/btnAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add User"
android:onClick="onClickAddDetails"
dd
android:layout_marginTop="20dp" />
<Button
android:id="@+id/btnRetrieve"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Show Users"
android:onClick="onClickShowDetails"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/res"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#A52A2A"
android:layout_marginTop="50dp" />
</LinearLayout>
MainActivity.java Program
package co6i.micro.project.practical19;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
dd
if (name.isEmpty()) {
Toast.makeText(this, "Please enter a name", Toast.LENGTH_SHORT).show();
return;
}
resultView.setText(strBuild.toString());
cursor.close();
} else {
resultView.setText("No Records Found");
}
}
}
dd
UsersProvider.java
package co6i.micro.project.practical19;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import java.util.HashMap;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, "users", URI_CODE);
uriMatcher.addURI(PROVIDER_NAME, "users/#", URI_CODE);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_DB_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
@Override
public boolean onCreate() {
Context context = getContext();
DatabaseHelper dbHelper = new DatabaseHelper(context);
db = dbHelper.getWritableDatabase();
return db != null;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String
sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.setTables(TABLE_NAME);
if (uriMatcher.match(uri) == URI_CODE) {
qb.setProjectionMap(values);
} else {
throw new IllegalArgumentException("Unknown URI " + uri);
}
@Override
public Uri insert(Uri uri, ContentValues values) {
dd
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count = db.update(TABLE_NAME, values, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = db.delete(TABLE_NAME, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public String getType(Uri uri) {
return (uriMatcher.match(uri) == URI_CODE) ? "vnd.android.cursor.dir/users" : null;
}
}
Output: