From fdb3ee3b06a0f880b986bba671e3f8890493fa57 Mon Sep 17 00:00:00 2001 From: Oizaro Date: Wed, 21 Oct 2020 01:39:47 +0200 Subject: [PATCH] Debloat + Cleanup + Readme update --- README.md | 3 +- .../gms/auth/AskPermissionActivity.java | 271 ------------------ .../gms/auth/AuthManagerServiceImpl.java | 25 -- .../loginservice/AccountAuthenticator.java | 19 +- .../microg/gms/checkin/TriggerReceiver.java | 1 - .../gms/gservices/GServicesProvider.java | 9 +- .../org/microg/gms/ui/AskPushPermission.java | 30 -- .../org/microg/gms/gcm/PushRegisterService.kt | 36 +-- .../microg/gms/phenotype/PhenotypeService.kt | 1 + .../DeviceRegistrationPreferencesFragment.kt | 1 + .../PushNotificationAppPreferencesFragment.kt | 1 + .../ui/PushNotificationPreferencesFragment.kt | 21 +- .../main/res/drawable-hdpi/ic_generic_man.png | Bin 1902 -> 0 bytes .../main/res/drawable-mdpi/ic_generic_man.png | Bin 1351 -> 0 bytes .../res/drawable-xhdpi/ic_generic_man.png | Bin 2439 -> 0 bytes ...proprietary_auth_ic_scope_icon_default.png | Bin 1204 -> 0 bytes .../res/drawable-xxhdpi/ic_generic_man.png | Bin 2373 -> 0 bytes .../src/main/res/layout/ask_gcm.xml | 97 ------- .../src/main/res/layout/ask_permission.xml | 132 --------- .../res/layout/ask_permission_list_entry.xml | 48 ---- .../layout/device_registration_fragment.xml | 3 +- .../src/main/res/values-es/strings.xml | 2 - .../src/main/res/values-in/strings.xml | 2 - .../src/main/res/values-it/strings.xml | 2 - .../src/main/res/values/strings.xml | 2 - .../main/res/xml/preferences_gcm_advanced.xml | 6 - 26 files changed, 41 insertions(+), 671 deletions(-) delete mode 100644 play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java delete mode 100644 play-services-core/src/main/res/drawable-hdpi/ic_generic_man.png delete mode 100644 play-services-core/src/main/res/drawable-mdpi/ic_generic_man.png delete mode 100644 play-services-core/src/main/res/drawable-xhdpi/ic_generic_man.png delete mode 100644 play-services-core/src/main/res/drawable-xhdpi/proprietary_auth_ic_scope_icon_default.png delete mode 100644 play-services-core/src/main/res/drawable-xxhdpi/ic_generic_man.png delete mode 100755 play-services-core/src/main/res/layout/ask_gcm.xml delete mode 100755 play-services-core/src/main/res/layout/ask_permission.xml delete mode 100755 play-services-core/src/main/res/layout/ask_permission_list_entry.xml diff --git a/README.md b/README.md index 3e4471e5..98ce9923 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,14 @@ This fork tweaks MicroG to be usable by applications that require Google authent - Analytics - Car - Droidguard - - Exposure-notifications + - Exposure-Notifications - Feedback - Firebase - Games - Location - Maps - Recovery + - Registering app permissions - SafetyNet - Self-Check - Search diff --git a/play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java deleted file mode 100644 index e3317d71..00000000 --- a/play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.microg.gms.auth; - -import android.accounts.Account; -import android.accounts.AccountAuthenticatorActivity; -import android.accounts.AccountManager; -import android.app.NotificationManager; -import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.text.Html; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; - -import com.mgoogle.android.gms.R; - -import org.microg.gms.common.PackageUtils; -import org.microg.gms.people.PeopleManager; - -import java.io.IOException; - -import static android.accounts.AccountManager.KEY_ACCOUNT_NAME; -import static android.accounts.AccountManager.KEY_ACCOUNT_TYPE; -import static android.accounts.AccountManager.KEY_ANDROID_PACKAGE_NAME; -import static android.accounts.AccountManager.KEY_AUTHTOKEN; -import static android.accounts.AccountManager.KEY_CALLER_PID; -import static android.accounts.AccountManager.KEY_CALLER_UID; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; - -public class AskPermissionActivity extends AccountAuthenticatorActivity { - public static final String EXTRA_FROM_ACCOUNT_MANAGER = "from_account_manager"; - public static final String EXTRA_CONSENT_DATA = "consent_data"; - - private static final String TAG = "GmsAuthAskPermission"; - private Account account; - private String packageName; - private String service; - private AuthManager authManager; - private ConsentData consentData; - private boolean fromAccountManager = false; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.ask_permission); - - // This makes the dialog take up the full width - WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); - lp.copyFrom(getWindow().getAttributes()); - lp.width = WindowManager.LayoutParams.MATCH_PARENT; - lp.height = WindowManager.LayoutParams.WRAP_CONTENT; - getWindow().setAttributes(lp); - - account = new Account(getIntent().getStringExtra(KEY_ACCOUNT_NAME), - getIntent().getStringExtra(KEY_ACCOUNT_TYPE)); - packageName = getIntent().getStringExtra(KEY_ANDROID_PACKAGE_NAME); - service = getIntent().getStringExtra(KEY_AUTHTOKEN); - if (getIntent().hasExtra(EXTRA_CONSENT_DATA)) { - try { - consentData = ConsentData.ADAPTER.decode(getIntent().getByteArrayExtra(EXTRA_CONSENT_DATA)); - } catch (Exception e) { - Log.w(TAG, e); - } - } else { - Log.d(TAG, "No Consent details attached"); - } - - NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - nm.cancel(packageName.hashCode()); - - if (getIntent().hasExtra(EXTRA_FROM_ACCOUNT_MANAGER)) fromAccountManager = true; - int callerUid = getIntent().getIntExtra(KEY_CALLER_UID, 0); - packageName = PackageUtils.getAndCheckPackage(this, packageName, getIntent().getIntExtra(KEY_CALLER_UID, 0), getIntent().getIntExtra(KEY_CALLER_PID, 0)); - authManager = new AuthManager(this, account.name, packageName, service); - - // receive package info - PackageManager packageManager = getPackageManager(); - ApplicationInfo applicationInfo; - try { - applicationInfo = packageManager.getApplicationInfo(packageName, 0); - } catch (PackageManager.NameNotFoundException e) { - Log.w(TAG, e); - finish(); - return; - } - CharSequence appLabel = packageManager.getApplicationLabel(applicationInfo); - Drawable appIcon = packageManager.getApplicationIcon(applicationInfo); - Bitmap profileIcon = PeopleManager.getOwnerAvatarBitmap(this, account.name, false); - - // receive profile icon - if (profileIcon != null) { - ((ImageView) findViewById(R.id.account_photo)).setImageBitmap(profileIcon); - } else { - new Thread(() -> { - final Bitmap profileIcon1 = PeopleManager.getOwnerAvatarBitmap(AskPermissionActivity.this, account.name, true); - runOnUiThread(() -> ((ImageView) findViewById(R.id.account_photo)).setImageBitmap(profileIcon1)); - - }).start(); - } - - ((ImageView) findViewById(R.id.app_icon)).setImageDrawable(appIcon); - if (isOAuth()) { - ((TextView) findViewById(R.id.title)).setText(getString(R.string.ask_scope_permission_title, appLabel)); - } else { - ((TextView) findViewById(R.id.title)).setText(getString(R.string.ask_service_permission_title, appLabel)); - } - findViewById(android.R.id.button1).setOnClickListener(v -> onAllow()); - findViewById(android.R.id.button2).setOnClickListener(v -> onDeny()); - ((ListView) findViewById(R.id.permissions)).setAdapter(new PermissionAdapter()); - } - - public void onAllow() { - authManager.setPermitted(true); - findViewById(android.R.id.button1).setEnabled(false); - findViewById(android.R.id.button2).setEnabled(false); - findViewById(R.id.progress_bar).setVisibility(VISIBLE); - findViewById(R.id.no_progress_bar).setVisibility(GONE); - new Thread(() -> { - try { - AuthResponse response = authManager.requestAuth(fromAccountManager); - Bundle result = new Bundle(); - result.putString(KEY_AUTHTOKEN, response.auth); - result.putString(KEY_ACCOUNT_NAME, account.name); - result.putString(KEY_ACCOUNT_TYPE, account.type); - result.putString(KEY_ANDROID_PACKAGE_NAME, packageName); - result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); - setAccountAuthenticatorResult(result); - } catch (IOException e) { - Log.w(TAG, e); - } - finish(); - - }).start(); - } - - public void onDeny() { - authManager.setPermitted(false); - finish(); - } - - @Override - public void finish() { - NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - nm.cancel(packageName.hashCode()); - super.finish(); - } - - private boolean isOAuth() { - return service.startsWith("oauth2:") || service.startsWith("oauth:"); - } - - private String getScopeLabel(String scope) { - if (consentData != null) { - for (ConsentData.ScopeDetails scopeDetails : consentData.scopes) { - if (scope.equals(scopeDetails.id)) { - return scopeDetails.title; - } - } - } - String labelResourceId = "permission_scope_"; - String escapedScope = scope.replace("/", "_").replace("-", "_"); - if (scope.startsWith("https://")) { - labelResourceId += escapedScope.substring(8); - } else { - labelResourceId += escapedScope; - } - int labelResource = getResources().getIdentifier(labelResourceId, "string", getPackageName()); - if (labelResource != 0) { - return getString(labelResource); - } - return "unknown"; - } - - private String getScopeDescription(String scope) { - if (consentData != null) { - for (ConsentData.ScopeDetails scopeDetails : consentData.scopes) { - if (scope.equals(scopeDetails.id)) { - return scopeDetails.description; - } - } - } - return null; - } - - private String getServiceLabel(String service) { - int labelResource = getResources().getIdentifier("permission_service_" + service + "_label", "string", getPackageName()); - if (labelResource != 0) { - return getString(labelResource); - } - return "unknown"; - } - - private class PermissionAdapter extends BaseAdapter { - - @Override - public int getCount() { - if (isOAuth()) { - return service.split(" ").length; - } - return 1; - } - - @Override - public String getItem(int position) { - if (isOAuth()) { - String tokens = service.split(":", 2)[1]; - return tokens.split(" ")[position]; - } - return service; - } - - @Override - public long getItemId(int position) { - return getItem(position).hashCode(); - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - String item = getItem(position); - String label; - String description; - if (isOAuth()) { - label = getScopeLabel(item); - description = getScopeDescription(item); - } else { - label = getServiceLabel(item); - description = null; - } - View view = convertView; - if (view == null) { - view = LayoutInflater.from(AskPermissionActivity.this) - .inflate(R.layout.ask_permission_list_entry, parent, false); - } - ((TextView) view.findViewById(android.R.id.text1)).setText(label); - TextView textView = (TextView) view.findViewById(android.R.id.text2); - if (description != null && !description.isEmpty()) { - textView.setText(Html.fromHtml(description.trim().replace("\n", "
"))); - textView.setVisibility(VISIBLE); - } else { - textView.setVisibility(GONE); - } - return view; - } - } -} diff --git a/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java b/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java index 33641b39..2aff2038 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java @@ -49,7 +49,6 @@ import static android.accounts.AccountManager.KEY_ACCOUNT_NAME; import static android.accounts.AccountManager.KEY_ACCOUNT_TYPE; import static android.accounts.AccountManager.KEY_AUTHTOKEN; import static android.accounts.AccountManager.KEY_CALLER_PID; -import static org.microg.gms.auth.AskPermissionActivity.EXTRA_CONSENT_DATA; public class AuthManagerServiceImpl extends IAuthManagerService.Stub { private static final String TAG = "GmsAuthManagerSvc"; @@ -103,30 +102,6 @@ public class AuthManagerServiceImpl extends IAuthManagerService.Stub { details.putParcelable("TokenData", new TokenData(res.auth, res.expiry, scope.startsWith("oauth2:"), getScopes(scope))); result.putBundle("tokenDetails", details); result.putString(KEY_ERROR, "OK"); - } else { - result.putString(KEY_ERROR, "NeedPermission"); - Intent i = new Intent(context, AskPermissionActivity.class); - i.putExtras(extras); - i.putExtra(KEY_ANDROID_PACKAGE_NAME, packageName); - i.putExtra(KEY_ACCOUNT_TYPE, authManager.getAccountType()); - i.putExtra(KEY_ACCOUNT_NAME, accountName); - i.putExtra(KEY_AUTHTOKEN, scope); - try { - if (res.consentDataBase64 != null) - i.putExtra(EXTRA_CONSENT_DATA, Base64.decode(res.consentDataBase64, Base64.URL_SAFE)); - } catch (Exception e) { - Log.w(TAG, "Can't decode consent data: ", e); - } - if (notify && NotificationManagerCompat.from(context.getApplicationContext()).areNotificationsEnabled()) { - NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - nm.notify(packageName.hashCode(), new NotificationCompat.Builder(context) - .setContentIntent(PendingIntent.getActivity(context, 0, i, 0)) - .setContentTitle(context.getString(R.string.auth_notification_title)) - .setContentText(context.getString(R.string.auth_notification_content, getPackageLabel(packageName, context.getPackageManager()))) - .setSmallIcon(android.R.drawable.stat_notify_error) - .build()); - } - result.putParcelable(KEY_USER_RECOVERY_INTENT, i); } } catch (IOException e) { Log.w(TAG, e); diff --git a/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java b/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java index 069379c8..b2072a0c 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java @@ -27,7 +27,6 @@ import android.os.Bundle; import android.util.Base64; import android.util.Log; -import org.microg.gms.auth.AskPermissionActivity; import org.microg.gms.auth.AuthConstants; import org.microg.gms.auth.AuthManager; import org.microg.gms.auth.AuthResponse; @@ -100,28 +99,12 @@ class AccountAuthenticator extends AbstractAccountAuthenticator { result.putString(KEY_ACCOUNT_NAME, account.name); result.putString(KEY_AUTHTOKEN, res.auth); return result; - } else { - Bundle result = new Bundle(); - Intent i = new Intent(context, AskPermissionActivity.class); - i.putExtras(options); - i.putExtra(KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); - i.putExtra(KEY_ANDROID_PACKAGE_NAME, app); - i.putExtra(KEY_ACCOUNT_TYPE, account.type); - i.putExtra(KEY_ACCOUNT_NAME, account.name); - i.putExtra(KEY_AUTHTOKEN, authTokenType); - try { - if (res.consentDataBase64 != null) - i.putExtra(AskPermissionActivity.EXTRA_CONSENT_DATA, Base64.decode(res.consentDataBase64, Base64.URL_SAFE)); - } catch (Exception e) { - Log.w(TAG, "Can't decode consent data: ", e); - } - result.putParcelable(KEY_INTENT, i); - return result; } } catch (Exception e) { Log.w(TAG, e); return null; } + return null; } @Override diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java b/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java index e4fdedba..e2bcca5d 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java @@ -31,7 +31,6 @@ import static org.microg.gms.checkin.CheckinService.REGULAR_CHECKIN_INTERVAL; public class TriggerReceiver extends WakefulBroadcastReceiver { private static final String TAG = "GmsCheckinTrigger"; - private static boolean registered = false; @Override public void onReceive(Context context, Intent intent) { diff --git a/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java b/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java index 36d64202..57379c87 100644 --- a/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java +++ b/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java @@ -56,12 +56,9 @@ public class GServicesProvider extends ContentProvider { @Override public boolean onCreate() { databaseHelper = new DatabaseHelper(getContext()); - if (CheckinPrefs.get(getContext()).isEnabled()) { - getContext().sendOrderedBroadcast(new Intent(getContext(), org.microg.gms.checkin.TriggerReceiver.class), null); - } - if (GcmPrefs.get(getContext()).isEnabled()) { - getContext().sendBroadcast(new Intent(org.microg.gms.gcm.TriggerReceiver.FORCE_TRY_RECONNECT, null, getContext(), org.microg.gms.gcm.TriggerReceiver.class)); - } + + getContext().sendOrderedBroadcast(new Intent(getContext(), org.microg.gms.checkin.TriggerReceiver.class), null); + getContext().sendBroadcast(new Intent(org.microg.gms.gcm.TriggerReceiver.FORCE_TRY_RECONNECT, null, getContext(), org.microg.gms.gcm.TriggerReceiver.class)); return true; } diff --git a/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java b/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java index 322ba315..8fdef45f 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java @@ -51,36 +51,6 @@ public class AskPushPermission extends FragmentActivity { finish(); return; } - - setContentView(R.layout.ask_gcm); - - try { - PackageManager pm = getPackageManager(); - final ApplicationInfo info = pm.getApplicationInfo(packageName, 0); - CharSequence label = pm.getApplicationLabel(info); - - ((TextView) findViewById(R.id.permission_message)).setText(Html.fromHtml("Allow " + label + " to register for push notifications?")); - findViewById(R.id.permission_allow_button).setOnClickListener(v -> { - if (answered) return; - database.noteAppKnown(packageName, true); - answered = true; - Bundle bundle = new Bundle(); - bundle.putBoolean(EXTRA_EXPLICIT, true); - resultReceiver.send(Activity.RESULT_OK, bundle); - finish(); - }); - findViewById(R.id.permission_deny_button).setOnClickListener(v -> { - if (answered) return; - database.noteAppKnown(packageName, false); - answered = true; - Bundle bundle = new Bundle(); - bundle.putBoolean(EXTRA_EXPLICIT, true); - resultReceiver.send(Activity.RESULT_CANCELED, bundle); - finish(); - }); - } catch (PackageManager.NameNotFoundException e) { - finish(); - } } @Override diff --git a/play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt b/play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt index 01dd1a58..69c84b30 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt @@ -2,6 +2,8 @@ * SPDX-FileCopyrightText: 2020, microG Project Team * SPDX-License-Identifier: Apache-2.0 */ +@file:Suppress("DEPRECATION") + package org.microg.gms.gcm import android.app.Activity @@ -144,7 +146,7 @@ class PushRegisterService : LifecycleService() { private suspend fun register(intent: Intent) { val packageName = intent.appPackageName ?: throw RuntimeException("No package provided") ensureAppRegistrationAllowed(this, database, packageName) - Log.d(TAG, "register[req]: " + intent.toString() + " extras=" + intent!!.extras) + Log.d(TAG, "register[req]: " + intent.toString() + " extras=" + intent.extras) val bundle = completeRegisterRequest(this, database, RegisterRequest() .build(Utils.getBuild(this)) @@ -236,7 +238,7 @@ internal class PushRegisterHandler(private val context: Context, private val dat } } - private fun sendReply(what: Int, id: Int, replyTo: Messenger, data: Bundle, oneWay: Boolean) { + private fun sendReply(what: Int, id: Int, replyTo: Messenger, data: Bundle) { if (what == 0) { val outIntent = Intent(ACTION_C2DM_REGISTRATION) outIntent.putExtras(data) @@ -248,51 +250,51 @@ internal class PushRegisterHandler(private val context: Context, private val dat sendReplyViaMessage(what, id, replyTo, messageData) } - private fun replyError(what: Int, id: Int, replyTo: Messenger, errorMessage: String, oneWay: Boolean) { + private fun replyError(what: Int, id: Int, replyTo: Messenger, errorMessage: String) { val bundle = Bundle() bundle.putString(EXTRA_ERROR, errorMessage) - sendReply(what, id, replyTo, bundle, oneWay) + sendReply(what, id, replyTo, bundle) } private fun replyNotAvailable(what: Int, id: Int, replyTo: Messenger) { - replyError(what, id, replyTo, ERROR_SERVICE_NOT_AVAILABLE, false) + replyError(what, id, replyTo, ERROR_SERVICE_NOT_AVAILABLE) } private val selfAuthIntent: PendingIntent - private get() { + get() { val intent = Intent() intent.setPackage("com.google.example.invalidpackage") return PendingIntent.getBroadcast(context, 0, intent, 0) } override fun handleMessage(msg: Message) { - var msg = msg - val obj = msg.obj - if (msg.what == 0) { + var getmsg = msg + val obj = getmsg.obj + if (getmsg.what == 0) { if (obj is Intent) { val nuMsg = Message.obtain() - nuMsg.what = msg.what + nuMsg.what = getmsg.what nuMsg.arg1 = 0 nuMsg.replyTo = null val packageName = obj.appPackageName val data = Bundle() data.putBoolean("oneWay", false) data.putString("pkg", packageName) - data.putBundle("data", msg.data) + data.putBundle("data", getmsg.data) nuMsg.data = data - msg = nuMsg + getmsg = nuMsg } else { return } } - val what = msg.what - val id = msg.arg1 - val replyTo = msg.replyTo + val what = getmsg.what + val id = getmsg.arg1 + val replyTo = getmsg.replyTo if (replyTo == null) { Log.w(TAG, "replyTo is null") return } - val data = msg.data + val data = getmsg.data val packageName = data.getString("pkg") ?: return val subdata = data.getBundle("data") try { @@ -319,7 +321,7 @@ internal class PushRegisterHandler(private val context: Context, private val dat .app(packageName) .delete(delete) .extraParams(subdata)) - sendReply(what, id, replyTo, bundle, oneWay) + sendReply(what, id, replyTo, bundle) } catch (e: Exception) { Log.w(TAG, e) replyNotAvailable(what, id, replyTo) diff --git a/play-services-core/src/main/kotlin/org/microg/gms/phenotype/PhenotypeService.kt b/play-services-core/src/main/kotlin/org/microg/gms/phenotype/PhenotypeService.kt index 354c6833..caf317a5 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/phenotype/PhenotypeService.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/phenotype/PhenotypeService.kt @@ -2,6 +2,7 @@ * SPDX-FileCopyrightText: 2020, microG Project Team * SPDX-License-Identifier: Apache-2.0 */ +@file:Suppress("DEPRECATION") package org.microg.gms.phenotype diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/DeviceRegistrationPreferencesFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/DeviceRegistrationPreferencesFragment.kt index 1dd406a1..9e37b9b7 100755 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/DeviceRegistrationPreferencesFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/DeviceRegistrationPreferencesFragment.kt @@ -2,6 +2,7 @@ * SPDX-FileCopyrightText: 2020, microG Project Team * SPDX-License-Identifier: Apache-2.0 */ +@file:Suppress("DEPRECATION") package org.microg.gms.ui diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationAppPreferencesFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationAppPreferencesFragment.kt index dba51e9e..cae63c36 100755 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationAppPreferencesFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationAppPreferencesFragment.kt @@ -2,6 +2,7 @@ * SPDX-FileCopyrightText: 2020, microG Project Team * SPDX-License-Identifier: Apache-2.0 */ +@file:Suppress("DEPRECATION") package org.microg.gms.ui diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt index b4b80167..39093757 100755 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt @@ -2,6 +2,7 @@ * SPDX-FileCopyrightText: 2020, microG Project Team * SPDX-License-Identifier: Apache-2.0 */ +@file:Suppress("DEPRECATION") package org.microg.gms.ui @@ -64,16 +65,18 @@ class PushNotificationPreferencesFragment : PreferenceFragmentCompat() { } private fun updateStatus() { - handler.postDelayed(updateRunnable, UPDATE_INTERVAL) - lifecycleScope.launchWhenStarted { - val statusInfo = getGcmServiceInfo(requireContext()) - pushStatusCategory.isVisible = statusInfo.configuration.enabled - pushStatus.summary = if (statusInfo != null && statusInfo.connected) { - getString(R.string.gcm_network_state_connected, DateUtils.getRelativeTimeSpanString(statusInfo.startTimestamp, System.currentTimeMillis(), 0)) - } else { - getString(R.string.gcm_network_state_disconnected) + try { + handler.postDelayed(updateRunnable, UPDATE_INTERVAL) + lifecycleScope.launchWhenStarted { + val statusInfo = getGcmServiceInfo(requireContext()) + pushStatusCategory.isVisible = statusInfo.configuration.enabled + pushStatus.summary = if (statusInfo.connected) { + getString(R.string.gcm_network_state_connected, DateUtils.getRelativeTimeSpanString(statusInfo.startTimestamp, System.currentTimeMillis(), 0)) + } else { + getString(R.string.gcm_network_state_disconnected) + } } - } + } catch (e: Exception) {} } private fun updateContent() { diff --git a/play-services-core/src/main/res/drawable-hdpi/ic_generic_man.png b/play-services-core/src/main/res/drawable-hdpi/ic_generic_man.png deleted file mode 100644 index e1e346239ba2cbffd6cf108752e7165a35084fcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1902 zcmeHH`9IVN0R2uF$C7K%GR8Eru5oW-*q97v2$NAnt^1~gWL;s5+hB5(YX@bKBkO1v zQyEMK8AqgqW``WPubf%?2kd{)`+VMepZDwgyw6L)Tbm0BNDBY}AcVtWY)>5fANjaW z)J@0aE&!a8!(X;DJ&Bv&@x6inX`mK$M(SiDO`*2d1ONb?;^O83^YZZv2nq>{h>Alb zB&E(s%Rpsea`3YVd4-=8Rgr4ynp)>|FX-u`elbR0GQ;95EH7K*33gZQ9UPr*+;nzv zb#wRd^!D-f^A89N3JwVkyB84^6B|cLOioEBXJ%7!^70Fdic8AMA3v$6tg5c5t$)_= zXJgCrzgydBFFNR*-Hg{g%wE>u@W|-cyYUYblb_g}nc2Ddg~cyR%PVW^8=G6(J70JA z_74t^zEPt3hXH`w0*67{Idm@Pe{s5M3SqDebP7AWyRb~L>>PDzH_1HDYiAU4J$hIKYYn?W(Gwz2-2?YbK) zem63XZ2$EH9c}lYv-bxyBgT{fN3JVGDw(A_?Pv%iK;XWCL2YFuZy^^pmQhAfh7ND! zgXfWA)MrMyCXO)#5UIcG*ZxmgdG(&Sct#*6M=&cnkYr{?y7&fyLBWg{X$cHzF9C#d z01?MalYu9PE?M;n3A`&77R9jVDNRJ3@Z=If%9dW4hbg#?s4cHHjbmD&<%I2K_6RVQ zAMFmj@hMn#c(gXwz1u^xr#{{qT)Pnmrvz#;lUnjh;p}K8budzvxPs%FbR+tA8Bovy z+wL9IJ}YMTwMr;oyE(n1V1|=qrg8HlXM~yT+A=sLSf2-4QO-GFww4ZcD#J#61G&M%BM<0dcBZrC0>XIY?-qT?d_vDL z)`pEIyg$q5gVeWt9p_JB)xa0f5yR^f1=`}ggOz%ixm^dwGakr`G6h*9-QJuJBwk0cqOkdicXM_k8xHfU_6F~(kU5K7-G1Cy0$sRn^b$MN-ts&Vce{9P zV|@vdUYQA3k==6Vb5>n7hGy%%Bb?iS6hE)VjrN*X74Mr*+@Dyx#3 zJ94AQ$BR|!(;xujV_>fOn@#2IIbn|;z=!XAkq`%n#n9r1g!Fae!@6UT XT9Vrg{&0+O@`?b?)EZNF$tC_@ynTd# diff --git a/play-services-core/src/main/res/drawable-mdpi/ic_generic_man.png b/play-services-core/src/main/res/drawable-mdpi/ic_generic_man.png deleted file mode 100644 index 63c44cb9d5f6f7e9095c6b0c0a4cfe893602c821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1351 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_VB8$w6XFWwejWuwDg@>)o~Qzh zwh1Lce!;+KWMXDvWn<^y;^yJy;};MV5*85^mz0v0l~+_!R#j8i(9zX5Fg7tWx3sc$ zaCUL?@bUEz3Js5pijGT2PDxEm&&bNo%`2;HXl(21pD<SFT>O zcKxQ!Tek1mx&OfN6DLodyLjpHwHvqZ-n;+g>9glAUcP?w_Wg&CpT2zk_Wj4tU%&tS z{nyV|Ds7cV(2 z8Y$8CPRny88`rE=voB4R3$_ZHDP%eMQ`Xsg^WPu(do%1(#MhOw>$S4#PIpaw$k)S@ zJMZdx|FF1SYgS&E9?N|E)6SBXJ)68O%Cuc%7u=s^_J-lT_jY%KD-vwWLznDm-*>5x z;r4OqeHW^?Rvp;zs;x^z%|LJau^V?JkJT<*|H_qjTCZ_d<=ohA#nT3BeunAB%4A$H zvA7mLJwNl|?Cs|3zg3Gm;c4-%BOdlw_W-- zr)Ju}GrP4sVe!%%+x+<#At zb$@QQp0BY#sp8q))tBDOuU(!zVj8Agr z2Xc67x_D~Iv8A_2d_@iotuH`a$fys>PFtDs5TvI8Gm j#kyQSZr^u&!e8c9Om9rj*nR8-W-SI!S3j3^P6J?rU1e zCrvq)k64qmxfv=z~-(Jt_{k$?T4z?0vP%!`iAb~n9I)A2PgMG{O7>G=zuw@!sj4%pTn>YP5^*_ppY<7MD!3y3@j;i zSX$-?ME0nhyaM!?qSA3?71a}Ju#=}wt81Ro($>+{JEwpCf`OqC+}Om_?BXR0ON5oR zjV;p7;R?nP>*VU@j`Q@o=Hq+)hTp9_0e{>L3=Rnm3y+A5iiwSjPe@EoNli=7ctFT{ z`1nb7Zr;;;;KooRHnp_2wRdz=dfrjr_x26^{fRd8 z`OEOg=otO$_&-w&=8u`5v%gsExrN20-^(kj+_m+M&8=-7e`j~^JIsX)006ltD+}ja zjHPG%B3BpLzVDoCd=)th*Z>q+ciFci*B({nASm%1fxxmL9vVG?NlWrr_FV>OgIq~j2RLA7(;Xp2_}@G#9<;t`0@x`}km zQ3Wo=2dXJku5MNM4nx$#*NihKE+*9lHKXmb$W8$Pe84YS9M%HN z+`GiyT{+Vl5+%$oB+Oj+jk;!FDQ`y#(9{oh!ozFu~h`$f0;q9W-9F#7LADQ?4WR@MY=hq3Z#(a?%9O55SzdTqzev7AZ81~wxE;3 z{o;(3X`xK)=fKWZW1LD6o)Cn-m56VAmC)!%b302q4Q^x^DYPHYXV`YZVyR= zb8^EW3}%XGDJ*Xy(Z`-IOReI&xPno(U7d&3JK(H>Z9(FGV=5Y@xn5(ZapwVu$&{1; zood4+R_NYR}UM2+qAqHzS@kcDL2X(#gb8QSu+*Le#KvD2dsUY9RA|r#canPe z$Dz4cxa)X^Dtdme%KpmRfMkWLHa-!Sr~01gODG0s|NY8Pi&(8b9^&e#wKu88@AIVC z?!8?<=Y}HDN2AIiF*w+vqlgKc8dEEi zPbvLgGvJ^e^zh_2Ui!DkDWz&A)g067YvkcN-is-pmJhNy!$bMg=U#e^(bvtWW4N)q z*oTG>kvHc>Z;+&DK>GStP!hm*YKd3o>zH8g5 z(Twcf%S8vDDCA|`)0>}RE5pn}_kLzc>C)E>pp28ZF??;(peWgUYM^hU47=YIm;Lbw zq0z5o$scx@pI`J;z%;<2d~Q4+y*uN1isq_od~9CpdfXPZ0Cd4y7dQEaJoj>x4ib{+ z+r3*`1DSaadT*giZ>DxZ-fk`$cE6)eW($pgmk&`58M!F$ofb1mq=wRh{Jw#}b!$9& zNfk4yG*gnaa;aVMv8A!mHRhUUi02Ywl+|B(wC||WKK@&fFZ0W^{El*Bos7sancdoh PY6GCG9jvM?y;J@N(f-eF diff --git a/play-services-core/src/main/res/drawable-xhdpi/proprietary_auth_ic_scope_icon_default.png b/play-services-core/src/main/res/drawable-xhdpi/proprietary_auth_ic_scope_icon_default.png deleted file mode 100644 index b07b6f21877479e554b15d53b83a21fc299ba04e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1204 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXo3?%u_CO0rJFs=>o332`Z|G(NO7$PC?t8sq< zF#h^Wg8YIR7&sg6{Q1vyw5j3ljgAlvL1y>w=iL~!QsSh0SywQLEnnTfY(m9Bg?~;L zjDrrRp2}D1uF7>>&-e3O|F)Yk2TuEKt}K5bdXXnhV9N7n?~2&lHZ00gj`H3aKQr+| znUO3Dhpw;cOUp~Y|4!%4c`UW%n&Lg{+kLCFTiLRYd79Nv-TwaDA(6`;H|~G^B~X6N z=VsHBew!E=nAAO8977@wzrB7l{IY|{fyBC8W5$VFb1y_SaVH6eENK!I2w9_>wU(pl z)UpogC|1$wyBOX{|2u2f@@2vT_w-Bb=No^Ul*{ciIeBOHy-AbK{&>%PwLrj;b^Gty5dRApYrwxqeJ1jl%?&dK{m!%0h&Z?c6-!=h{JTyR)=U z#CR~JGbz!Nk;x&^SNSGqdZXC-w}mVQZnjF{44cCDD&7st-!m=1<(Sp+XmvGS z@0Sw6j&9k@8(y0)J8aIF;pd@jeEGoIb+^k~1j^r^Wx6xnRgTB`U7}*G3HyxCMILVq zm&{wUb_v^ql`@+)ypuNMSn_m&;DVDozxqg>WK?{9O~7Wla~uQrxwX?LOm|+@5dNDJ!z_lv(?I{wd@MZx^u??8@;KSMIl)rM&t(0{oi zw4!P&Kii}Dt5FAi9&djieBh1Cuj8ARFWWLH^5%yB$=yZ@8ogSd^`0!}dQ{$@UsJ{F(1t-|qV>4PW0)Xd=N>gTe~DWM4fM(w7i diff --git a/play-services-core/src/main/res/drawable-xxhdpi/ic_generic_man.png b/play-services-core/src/main/res/drawable-xxhdpi/ic_generic_man.png deleted file mode 100644 index fa4ffad91e9e2aedf99fc7f1c9f05d3e18103078..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2373 zcmeHI`8U*y1D(ZSto7{6WNbxQUdZ+}nqhd1rD4c3k;z^?QDd15&scg=cw$6rK+s@thTqekB*Lx^tn)(@yv*)z5b##B$(>J(aXk=_+hB8NE zEU?x#ws!Uoj+gLG1lP-Mzq%8zczThpdHeYK`3D4Ezwukpt&rQ~(6I0b3NudJ@EbGV;3Hot6b?|kL$ z?(Kj3esK6h8n_(^0>Pqfu^1Q1C+;NIOVU+RU^8gx+LC*+!-*?WC(jp_p7+^Kr=J$T6hm(&yL9Iw)M`wc@fE|L#@q1U$}(b&&Y zuuh0`@H&55ea3>VIPvhDP3Oj!kHFn~5=c$<9bFv#HC(ME%mfj5s7>me-F5-E63vo! z=AtWM!d1l{4xqEpR2M1`KMko+Y~|;^-i!tKWNNR=Q)(0>Y9kXSp@bv~@<@S3Z^9ce z;pi^$8)|egJv{{~^fn2m_eUWO2iC5W1*8@z$Q~je{sNK>xfnQNa9WVD#P9kv5=fIN zLbSr%3rsNkv^;TR3}PH;xat9PfKmK9OiUDW*#nS{!W)Tekc5=@(iD-<*pA!%IUrMe z@be{5ehFx57W9=sD_+)*kE5v#_5!l<^jNt}EHpAnE)xemOXBxq(x!d*mzXqME+&{o zGxz3i{04Zw;u-)Ek1(1B0IC=GY5?T-0vhskhFnoKot9laz>6VJtWo2b87CUigptT| zqNS2)JCcBi7=6YVY|~MrbF*dFW0|PIo{R5(i@xUn0qOjD(HiV&<|B-UaRT6~9o< zD2UPcT;Ve?sdME1m%AP@$lM=Syjn#ZS=vi5^T?3)9m}cSUj#gpv>49?9H`-=DVytI zFwFt1**mp)Tgx9Z+zejK`|`qd7GWdHD-agFT_@^C)m@ta@NcSI2I z%%>)9Za&hhCKB3&?^`}$DowcTjj`^LrgG=9?53E>3jwo%nJXVcO#2(tU!?RKsCt!r zw~-a%s)GkULi;RvvO{eVU#D5^nCKLXMl+Mj`I<_3-MYi!U$^HN!&#?T9muD%{`+*jmh%NZykc0X=%+j2gt)^}Kvv_LPOM&bwzddS-?Zhjzic z)NMK%htF%C&s$MFf{V$U$|my*{b!Y#7`~L1=y?;O|NHBU{#8r?*doE$Y_czS%OiV8 zm$Eq;9Ke-apH2Yb_B-|um{-%*s(6AkQKfDB_HIh;aG^4?Q6lfi*)zRSU0t)Q%5Urk zVVOD=bufKd2hY+zh+ZQ!^&-ETr$T6&8OW$h3a@9SNyz7aY!I+JUTi(CFlw*m&vCIK}!hDfrgj$wk|YL}NUxGt1iv z8E<9C^eq>}2P$>ugr`vP(9T@%H$bR6io~i1!*;rb0ohtP KVk<02asL3mW~m - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/play-services-core/src/main/res/layout/ask_permission.xml b/play-services-core/src/main/res/layout/ask_permission.xml deleted file mode 100755 index 9426a4a8..00000000 --- a/play-services-core/src/main/res/layout/ask_permission.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -