导航菜单

页面标题

页面副标题

xDrip+ v04633772025.07.16 - ContentProvider.java 源代码

正在查看: xDrip+ v04633772025.07.16 应用的 ContentProvider.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.activeandroid.content;

import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;
import android.util.SparseArray;
import com.activeandroid.ActiveAndroid;
import com.activeandroid.Cache;
import com.activeandroid.Configuration;
import com.activeandroid.Model;
import com.activeandroid.TableInfo;
import java.util.ArrayList;

public class ContentProvider extends android.content.ContentProvider {
    private static String sAuthority;
    private static final UriMatcher URI_MATCHER = new UriMatcher(-1);
    private static final SparseArray<Class<? extends Model>> TYPE_CODES = new SparseArray<>();
    private static SparseArray<String> sMimeTypeCache = new SparseArray<>();

    public static Uri createUri(Class<? extends Model> cls, Long l) {
        StringBuilder sb = new StringBuilder();
        sb.append("content://");
        sb.append(sAuthority);
        sb.append("/");
        sb.append(Cache.getTableName(cls).toLowerCase());
        if (l != null) {
            sb.append("/");
            sb.append(l.toString());
        }
        return Uri.parse(sb.toString());
    }

    @Override
    public boolean onCreate() {
        ActiveAndroid.initialize(getConfiguration());
        sAuthority = getAuthority();
        ArrayList arrayList = new ArrayList(Cache.getTableInfos());
        int size = arrayList.size();
        for (int i = 0; i < size; i++) {
            TableInfo tableInfo = (TableInfo) arrayList.get(i);
            int i2 = i * 2;
            int i3 = i2 + 1;
            int i4 = i2 + 2;
            UriMatcher uriMatcher = URI_MATCHER;
            uriMatcher.addURI(sAuthority, tableInfo.getTableName().toLowerCase(), i3);
            SparseArray<Class<? extends Model>> sparseArray = TYPE_CODES;
            sparseArray.put(i3, tableInfo.getType());
            uriMatcher.addURI(sAuthority, tableInfo.getTableName().toLowerCase() + "/#", i4);
            sparseArray.put(i4, tableInfo.getType());
        }
        return true;
    }

    @Override
    public String getType(Uri uri) {
        int match = URI_MATCHER.match(uri);
        String str = sMimeTypeCache.get(match);
        if (str != null) {
            return str;
        }
        Class<? extends Model> modelType = getModelType(uri);
        boolean z = match % 2 == 0;
        StringBuilder sb = new StringBuilder();
        sb.append("vnd");
        sb.append("");
        sb.append(sAuthority);
        sb.append("");
        sb.append(z ? "item" : "dir");
        sb.append("/");
        sb.append("vnd");
        sb.append("");
        sb.append(sAuthority);
        sb.append("");
        sb.append(Cache.getTableName(modelType));
        sMimeTypeCache.append(match, sb.toString());
        return sb.toString();
    }

    @Override
    public Uri insert(Uri uri, ContentValues contentValues) {
        Class<? extends Model> modelType = getModelType(uri);
        Long valueOf = Long.valueOf(Cache.openDatabase().insert(Cache.getTableName(modelType), null, contentValues));
        if (valueOf == null || valueOf.longValue() <= 0) {
            return null;
        }
        Uri createUri = createUri(modelType, valueOf);
        notifyChange(createUri);
        return createUri;
    }

    @Override
    public int update(Uri uri, ContentValues contentValues, String str, String[] strArr) {
        int update = Cache.openDatabase().update(Cache.getTableName(getModelType(uri)), contentValues, str, strArr);
        notifyChange(uri);
        return update;
    }

    @Override
    public int delete(Uri uri, String str, String[] strArr) {
        int delete = Cache.openDatabase().delete(Cache.getTableName(getModelType(uri)), str, strArr);
        notifyChange(uri);
        return delete;
    }

    @Override
    public Cursor query(Uri uri, String[] strArr, String str, String[] strArr2, String str2) {
        Cursor query = Cache.openDatabase().query(Cache.getTableName(getModelType(uri)), strArr, str, strArr2, null, null, str2);
        query.setNotificationUri(getContext().getContentResolver(), uri);
        return query;
    }

    protected String getAuthority() {
        return getContext().getPackageName();
    }

    protected Configuration getConfiguration() {
        return new Configuration.Builder(getContext()).create();
    }

    private Class<? extends Model> getModelType(Uri uri) {
        int match = URI_MATCHER.match(uri);
        if (match != -1) {
            return TYPE_CODES.get(match);
        }
        return null;
    }

    private void notifyChange(Uri uri) {
        getContext().getContentResolver().notifyChange(uri, null);
    }
}