Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1cc1dbec authored by Mohit Mali's avatar Mohit Mali
Browse files

Implemented provider at setting side

parent 67ffaae9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -3323,6 +3323,12 @@
            </intent-filter>
        </activity>

        <provider
            android:name="com.android.settings.applications.appinfo.MicroGProvider"
            android:authorities="custom.microg.STATUS.AUTHORITY"
            android:exported="true"
            android:multiprocess="true" />

        <!-- This is the longest AndroidManifest.xml ever. -->
    </application>
</manifest>
+33 −4
Original line number Diff line number Diff line
@@ -396,10 +396,14 @@ public class AppInfoDashboardFragment extends DashboardFragment
            // Refresh option menu
            if (mAppEntry.info.packageName.equals("com.google.android.gms")){
                ContentValues values = new ContentValues();
                    values.put("installStatus","false");
                 int status =  getContentResolver().update(Uri.parse("content://custom.microg.STATUS/cte"), values,  "id=?",
                values.put(MicroGProvider.installStatus,"true");

                if (count(MicroGProvider.CONTENT_URI)){
                    getContentResolver().update(MicroGProvider.CONTENT_URI, values, MicroGProvider.id + "=?",
                            new String[]{"1"});
                android.util.Log.e("TAG", "retrieveStatus: "+status);
                }else{
                    getContentResolver().insert(MicroGProvider.CONTENT_URI, values);
                }
            }

            getActivity().invalidateOptionsMenu();
@@ -409,6 +413,31 @@ public class AppInfoDashboardFragment extends DashboardFragment
        }
    }

    public boolean count(Uri uri) {
        Cursor cursor = getActivity().getContentResolver().query(uri, new String[]{"id"},
                null, null, null);
        android.util.Log.e("TAG", "count: " + cursor.getCount());
        if (cursor.getCount() > 0)
            return true;
        else
            return false;
    }


    private String retrieveStatus(){
        String status = null;
        Cursor c = getActivity().getContentResolver().query(Uri.parse("content://custom.microg.STATUS.AUTHORITY/cte"), null, OTAProvider.id+"=?", new String[]{"1"}, OTAProvider.Status);
        if (c.moveToFirst()) {
            do {
                status = c.getString(c.getColumnIndex(MicroGProvider.installStatus));
                android.util.Log.e("TAG", "onClickAddName: " + c.getString(c.getColumnIndex(MicroGProvider.installStatus)));
            } while (c.moveToNext());
        }
        return status;
    }




    @Override
    public void handleDialogClick(int id) {
+144 −0
Original line number Diff line number Diff line
package com.android.settings.applications.appinfo;

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.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;

import java.util.HashMap;

public class MicroGProvider extends ContentProvider {

    public static final String PROVIDER_NAME = "custom.microg.STATUS.AUTHORITY";
    public static final String URL = "content://" + PROVIDER_NAME + "/cte";
    public static final Uri CONTENT_URI = Uri.parse(URL);

    public static final String id = "id";
    public static final String installStatus = "installStatus";
    public static final int uriCode = 1;
    public static final UriMatcher uriMatcher;
    private static HashMap<String, String> values;

    static {
        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        uriMatcher.addURI(PROVIDER_NAME, "cte", uriCode);
        uriMatcher.addURI(PROVIDER_NAME, "cte/*", uriCode);
    }

    @Override
    public boolean onCreate() {
        Context context = getContext();
        DatabaseHelper dbHelper = new DatabaseHelper(context);
        db = dbHelper.getWritableDatabase();
        if (db != null) {
            return true;
        }
        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder) {
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
        qb.setTables(TABLE_NAME);

        switch (uriMatcher.match(uri)) {
            case uriCode:
                qb.setProjectionMap(values);
                break;
            default:
                throw new IllegalArgumentException("Unknown URI " + uri);
        }
        if (sortOrder == null || sortOrder == "") {
            sortOrder = installStatus;
        }
        Cursor c = qb.query(db, projection, selection, selectionArgs, null,
                null, sortOrder);
        c.setNotificationUri(getContext().getContentResolver(), uri);
        return c;
    }


    @Override
    public String getType(Uri uri) {
        switch (uriMatcher.match(uri)) {
            case uriCode:
                return "vnd.android.cursor.dir/cte";

            default:
                throw new IllegalArgumentException("Unsupported URI: " + uri);
        }
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        long rowID = db.insert(TABLE_NAME, "", values);
        if (rowID > 0) {
            Uri _uri = ContentUris.withAppendedId(CONTENT_URI, rowID);
            getContext().getContentResolver().notifyChange(_uri, null);
            return _uri;
        }
        throw new SQLException("Failed to add a record into " + uri);
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        int count = 0;
        switch (uriMatcher.match(uri)) {
            case uriCode:
                count = db.delete(TABLE_NAME, selection, selectionArgs);
                break;
            default:
                throw new IllegalArgumentException("Unknown URI " + uri);
        }
        getContext().getContentResolver().notifyChange(uri, null);
        return count;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                      String[] selectionArgs) {
        int count = 0;
        switch (uriMatcher.match(uri)) {
            case uriCode:
                count = db.update(TABLE_NAME, values, selection, selectionArgs);
                break;
            default:
                throw new IllegalArgumentException("Unknown URI " + uri);
        }
        getContext().getContentResolver().notifyChange(uri, null);
        return count;
    }

    private SQLiteDatabase db;
    static final String DATABASE_NAME = "microGDB";
    static final String TABLE_NAME = "microgtable";
    static final int DATABASE_VERSION = 1;
    static final String CREATE_DB_TABLE = " CREATE TABLE " + TABLE_NAME
            + " (id INTEGER PRIMARY KEY AUTOINCREMENT, "
            + " installStatus TEXT NOT NULL);";

    private static class DatabaseHelper extends SQLiteOpenHelper {
        DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

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