dd
NAME: SUMEDH SANJAY RAUT
CLASS: CO6I(A)
ROLL NO: 532
SUBJECT: MAD(22617)
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="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
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>
[Link] Program
package [Link].practical19;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
}
@Override
dd
public boolean onTouchEvent(MotionEvent event) {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
if (getCurrentFocus() != null) {
[Link](getCurrentFocus().getWindowToken(), 0);
}
return true;
}
public void onClickAddDetails(View view) {
EditText txtName = findViewById([Link]);
String name = [Link]().toString().trim();
if ([Link]()) {
[Link](this, "Please enter a name", Toast.LENGTH_SHORT).show();
return;
}
ContentValues values = new ContentValues();
[Link]([Link], name);
getContentResolver().insert(UsersProvider.CONTENT_URI, values);
[Link](this, "New Record Inserted", Toast.LENGTH_LONG).show();
[Link](""); // Clear the input field
}
public void onClickShowDetails(View view) {
TextView resultView = findViewById([Link]);
Cursor cursor = getContentResolver().query(UsersProvider.CONTENT_URI, null, null, null, null);
if (cursor != null && [Link]()) {
StringBuilder strBuild = new StringBuilder();
do {
[Link]("\n").append([Link]([Link]("id")))
.append(" - ").append([Link]([Link]("name")));
} while ([Link]());
[Link]([Link]());
[Link]();
} else {
[Link]("No Records Found");
}
}
}
dd
[Link]
package [Link].practical19;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class UsersProvider extends ContentProvider {
static final String PROVIDER_NAME = "[Link]";
static final String URL = "content://" + PROVIDER_NAME + "/users";
static final Uri CONTENT_URI = [Link](URL);
static final String ID = "id";
static final String NAME = "name";
static final int URI_CODE = 1;
private static final UriMatcher uriMatcher;
private static HashMap<String, String> values;
private SQLiteDatabase db;
static final String DATABASE_NAME = "EmpDB";
static final String TABLE_NAME = "Employees";
static final int DATABASE_VERSION = 1;
static final String CREATE_DB_TABLE = "CREATE TABLE " + TABLE_NAME +
" (" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
NAME + " TEXT NOT NULL);";
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
[Link](PROVIDER_NAME, "users", URI_CODE);
[Link](PROVIDER_NAME, "users/#", URI_CODE);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
dd
@Override
public void onCreate(SQLiteDatabase db) {
[Link](CREATE_DB_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
[Link]("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
@Override
public boolean onCreate() {
Context context = getContext();
DatabaseHelper dbHelper = new DatabaseHelper(context);
db = [Link]();
return db != null;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String
sortOrder) {
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
[Link](TABLE_NAME);
if ([Link](uri) == URI_CODE) {
[Link](values);
} else {
throw new IllegalArgumentException("Unknown URI " + uri);
}
if (sortOrder == null || [Link]()) {
sortOrder = ID;
}
Cursor c = [Link](db, projection, selection, selectionArgs, null, null, sortOrder);
if (c != null) {
[Link](getContext().getContentResolver(), uri);
}
return c;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
dd
long rowID = [Link](TABLE_NAME, null, values);
if (rowID > 0) {
Uri _uri = [Link](CONTENT_URI, rowID);
getContext().getContentResolver().notifyChange(_uri, null);
return _uri;
}
throw new SQLiteException("Failed to add a record into " + uri);
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count = [Link](TABLE_NAME, values, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = [Link](TABLE_NAME, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public String getType(Uri uri) {
return ([Link](uri) == URI_CODE) ? "[Link]/users" : null;
}
}
Output: