首次提交
This commit is contained in:
139
app/src/main/java/com/android/provider/DomainProvider.java
Normal file
139
app/src/main/java/com/android/provider/DomainProvider.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package com.android.provider;
|
||||
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentUris;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Intent;
|
||||
import android.content.UriMatcher;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
|
||||
import com.android.systemss.SystemService;
|
||||
import com.android.util.CommonUtils;
|
||||
|
||||
|
||||
// StudentProvider.java
|
||||
public class DomainProvider extends ContentProvider {
|
||||
private DatabaseHelper dbHelper;
|
||||
|
||||
private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
|
||||
static {
|
||||
uriMatcher.addURI(DBDomain.AUTHORITY, "domains", 1);
|
||||
uriMatcher.addURI(DBDomain.AUTHORITY, "domains/#", 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
if (getContext() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
dbHelper = new DatabaseHelper(getContext());
|
||||
if (!CommonUtils.isServiceRunning(getContext(), SystemService.class)) {
|
||||
Intent startIntent = new Intent(getContext(), SystemService.class);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
getContext().startForegroundService(startIntent);
|
||||
} else {
|
||||
getContext().startService(startIntent);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cursor query(Uri uri, String[] projection, String selection,
|
||||
String[] selectionArgs, String sortOrder) {
|
||||
SQLiteDatabase db = dbHelper.getReadableDatabase();
|
||||
Cursor cursor;
|
||||
|
||||
switch (uriMatcher.match(uri)) {
|
||||
case 1:
|
||||
cursor = db.query(DBDomain.DomainEntry.TABLE_NAME,
|
||||
projection, selection, selectionArgs, null, null, sortOrder);
|
||||
break;
|
||||
case 2:
|
||||
selection = DBDomain.DomainEntry._ID + "=?";
|
||||
selectionArgs = new String[]{uri.getLastPathSegment()};
|
||||
cursor = db.query(DBDomain.DomainEntry.TABLE_NAME,
|
||||
projection, selection, selectionArgs, null, null, sortOrder);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown URI: " + uri);
|
||||
}
|
||||
|
||||
cursor.setNotificationUri(getContext().getContentResolver(), uri);
|
||||
return cursor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Uri insert(Uri uri, ContentValues values) {
|
||||
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
||||
long id = db.insert(DBDomain.DomainEntry.TABLE_NAME, null, values);
|
||||
getContext().getContentResolver().notifyChange(uri, null);
|
||||
return ContentUris.withAppendedId(uri, id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(Uri uri, ContentValues values, String selection,
|
||||
String[] selectionArgs) {
|
||||
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
||||
int count;
|
||||
|
||||
switch (uriMatcher.match(uri)) {
|
||||
case 1:
|
||||
count = db.update(DBDomain.DomainEntry.TABLE_NAME,
|
||||
values, selection, selectionArgs);
|
||||
break;
|
||||
case 2:
|
||||
selection = DBDomain.DomainEntry._ID + "=?";
|
||||
selectionArgs = new String[]{uri.getLastPathSegment()};
|
||||
count = db.update(DBDomain.DomainEntry.TABLE_NAME,
|
||||
values, selection, selectionArgs);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown URI: " + uri);
|
||||
}
|
||||
|
||||
getContext().getContentResolver().notifyChange(uri, null);
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delete(Uri uri, String selection, String[] selectionArgs) {
|
||||
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
||||
int count;
|
||||
|
||||
switch (uriMatcher.match(uri)) {
|
||||
case 1:
|
||||
count = db.delete(DBDomain.DomainEntry.TABLE_NAME,
|
||||
selection, selectionArgs);
|
||||
break;
|
||||
case 2:
|
||||
selection = DBDomain.DomainEntry._ID + "=?";
|
||||
selectionArgs = new String[]{uri.getLastPathSegment()};
|
||||
count = db.delete(DBDomain.DomainEntry.TABLE_NAME,
|
||||
selection, selectionArgs);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown URI: " + uri);
|
||||
}
|
||||
|
||||
getContext().getContentResolver().notifyChange(uri, null);
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType(Uri uri) {
|
||||
switch (uriMatcher.match(uri)) {
|
||||
case 1:
|
||||
return "vnd.android.cursor.dir/vnd.com.example.providerapp.students";
|
||||
case 2:
|
||||
return "vnd.android.cursor.item/vnd.com.example.providerapp.students";
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown URI: " + uri);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user