Loading AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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> src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +33 −4 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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) { Loading src/com/android/settings/applications/appinfo/MicroGProvider.java 0 → 100644 +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); } } } Loading
AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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>
src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +33 −4 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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) { Loading
src/com/android/settings/applications/appinfo/MicroGProvider.java 0 → 100644 +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); } } }