mirror of
https://github.com/YTVanced/VancedMicroG
synced 2024-11-14 23:15:06 +00:00
commit
7088a0da2f
12 changed files with 48 additions and 111 deletions
|
@ -35,7 +35,7 @@ buildscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:4.1.2'
|
classpath 'com.android.tools.build:gradle:4.1.3'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||||
classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion"
|
classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion"
|
||||||
}
|
}
|
||||||
|
@ -45,8 +45,8 @@ allprojects {
|
||||||
apply plugin: 'idea'
|
apply plugin: 'idea'
|
||||||
|
|
||||||
group = 'org.microg.gms'
|
group = 'org.microg.gms'
|
||||||
version = "0.2.18.210390"
|
version = "0.2.18.210500"
|
||||||
ext.appVersionCode = 210390001
|
ext.appVersionCode = 210500001
|
||||||
ext.isReleaseVersion = false
|
ext.isReleaseVersion = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -163,6 +163,19 @@ public class GoogleApiAvailability {
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifies that Google Play services is installed and enabled on this device, and that the version installed on
|
||||||
|
* this device is no older than the one required by this client or the version is not older than the one specified
|
||||||
|
* in <code>minApkVersion</code>.
|
||||||
|
*
|
||||||
|
* @return status code indicating whether there was an error. Can be one of following in
|
||||||
|
* {@link ConnectionResult}: SUCCESS, SERVICE_MISSING, SERVICE_UPDATING,
|
||||||
|
* SERVICE_VERSION_UPDATE_REQUIRED, SERVICE_DISABLED, SERVICE_INVALID
|
||||||
|
*/
|
||||||
|
public int isGooglePlayServicesAvailable(Context context, int minApkVersion) {
|
||||||
|
return isGooglePlayServicesAvailable(context);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines whether an error can be resolved via user action. If true, proceed by calling
|
* Determines whether an error can be resolved via user action. If true, proceed by calling
|
||||||
* {@link #getErrorDialog(Activity, int, int)} and showing the dialog.
|
* {@link #getErrorDialog(Activity, int, int)} and showing the dialog.
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api "org.microg:safe-parcel:1.7.0"
|
api "org.microg:safe-parcel:1.7.0"
|
||||||
|
@ -41,6 +40,10 @@ android {
|
||||||
buildConfigField "int", "VERSION_CODE", "$appVersionCode"
|
buildConfigField "int", "VERSION_CODE", "$appVersionCode"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buildFeatures {
|
||||||
|
viewBinding = true
|
||||||
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-kapt'
|
apply plugin: 'kotlin-kapt'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.squareup.wire:wire-runtime:3.6.1'
|
implementation 'com.squareup.wire:wire-runtime:3.6.1'
|
||||||
|
@ -70,6 +69,7 @@ android {
|
||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
dataBinding = true
|
dataBinding = true
|
||||||
|
viewBinding = true
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|
|
@ -331,12 +331,6 @@
|
||||||
android:resource="@string/gms_settings_summary" />
|
android:resource="@string/gms_settings_summary" />
|
||||||
</activity-alias>
|
</activity-alias>
|
||||||
|
|
||||||
<activity
|
|
||||||
android:name="org.microg.gms.ui.AskPushPermission"
|
|
||||||
android:excludeFromRecents="true"
|
|
||||||
android:process=":ui"
|
|
||||||
android:theme="@style/Theme.AppCompat.DayNight.Dialog.Alert.NoActionBar" />
|
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="org.microg.gms.ui.AboutFragment$AsActivity"
|
android:name="org.microg.gms.ui.AboutFragment$AsActivity"
|
||||||
android:label="@string/pref_about_title"
|
android:label="@string/pref_about_title"
|
||||||
|
|
|
@ -95,7 +95,9 @@ public class CheckinService extends IntentService {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.w(TAG, e);
|
Log.w(TAG, e);
|
||||||
} finally {
|
} finally {
|
||||||
WakefulBroadcastReceiver.completeWakefulIntent(intent);
|
if (intent != null) {
|
||||||
|
WakefulBroadcastReceiver.completeWakefulIntent(intent);
|
||||||
|
}
|
||||||
schedule(this);
|
schedule(this);
|
||||||
stopSelf();
|
stopSelf();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2013-2017 microG Project Team
|
* SPDX-FileCopyrightText: 2016, microG Project Team
|
||||||
*
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
* 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.gcm;
|
package org.microg.gms.gcm;
|
||||||
|
@ -81,13 +70,13 @@ public class GcmDatabase extends SQLiteOpenHelper {
|
||||||
public final boolean wakeForDelivery;
|
public final boolean wakeForDelivery;
|
||||||
|
|
||||||
private App(Cursor cursor) {
|
private App(Cursor cursor) {
|
||||||
packageName = cursor.getString(cursor.getColumnIndex(FIELD_PACKAGE_NAME));
|
packageName = cursor.getString(cursor.getColumnIndexOrThrow(FIELD_PACKAGE_NAME));
|
||||||
lastError = cursor.getString(cursor.getColumnIndex(FIELD_LAST_ERROR));
|
lastError = cursor.getString(cursor.getColumnIndexOrThrow(FIELD_LAST_ERROR));
|
||||||
lastMessageTimestamp = cursor.getLong(cursor.getColumnIndex(FIELD_LAST_MESSAGE_TIMESTAMP));
|
lastMessageTimestamp = cursor.getLong(cursor.getColumnIndexOrThrow(FIELD_LAST_MESSAGE_TIMESTAMP));
|
||||||
totalMessageCount = cursor.getLong(cursor.getColumnIndex(FIELD_TOTAL_MESSAGE_COUNT));
|
totalMessageCount = cursor.getLong(cursor.getColumnIndexOrThrow(FIELD_TOTAL_MESSAGE_COUNT));
|
||||||
totalMessageBytes = cursor.getLong(cursor.getColumnIndex(FIELD_TOTAL_MESSAGE_BYTES));
|
totalMessageBytes = cursor.getLong(cursor.getColumnIndexOrThrow(FIELD_TOTAL_MESSAGE_BYTES));
|
||||||
allowRegister = cursor.getLong(cursor.getColumnIndex(FIELD_ALLOW_REGISTER)) == 1;
|
allowRegister = cursor.getLong(cursor.getColumnIndexOrThrow(FIELD_ALLOW_REGISTER)) == 1;
|
||||||
wakeForDelivery = cursor.getLong(cursor.getColumnIndex(FIELD_WAKE_FOR_DELIVERY)) == 1;
|
wakeForDelivery = cursor.getLong(cursor.getColumnIndexOrThrow(FIELD_WAKE_FOR_DELIVERY)) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasError() {
|
public boolean hasError() {
|
||||||
|
@ -102,10 +91,10 @@ public class GcmDatabase extends SQLiteOpenHelper {
|
||||||
public final String registerId;
|
public final String registerId;
|
||||||
|
|
||||||
public Registration(Cursor cursor) {
|
public Registration(Cursor cursor) {
|
||||||
packageName = cursor.getString(cursor.getColumnIndex(FIELD_PACKAGE_NAME));
|
packageName = cursor.getString(cursor.getColumnIndexOrThrow(FIELD_PACKAGE_NAME));
|
||||||
signature = cursor.getString(cursor.getColumnIndex(FIELD_SIGNATURE));
|
signature = cursor.getString(cursor.getColumnIndexOrThrow(FIELD_SIGNATURE));
|
||||||
timestamp = cursor.getLong(cursor.getColumnIndex(FIELD_TIMESTAMP));
|
timestamp = cursor.getLong(cursor.getColumnIndexOrThrow(FIELD_TIMESTAMP));
|
||||||
registerId = cursor.getString(cursor.getColumnIndex(FIELD_REGISTER_ID));
|
registerId = cursor.getString(cursor.getColumnIndexOrThrow(FIELD_REGISTER_ID));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -320,7 +320,7 @@ public class McsService extends Service implements Handler.Callback {
|
||||||
WakefulBroadcastReceiver.completeWakefulIntent(intent);
|
WakefulBroadcastReceiver.completeWakefulIntent(intent);
|
||||||
} else if (connectIntent == null) {
|
} else if (connectIntent == null) {
|
||||||
connectIntent = intent;
|
connectIntent = intent;
|
||||||
} else {
|
} else if (intent != null) {
|
||||||
WakefulBroadcastReceiver.completeWakefulIntent(intent);
|
WakefulBroadcastReceiver.completeWakefulIntent(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,13 +42,13 @@ public class PeopleManager {
|
||||||
public static final String USERINFO_URL = "https://www.googleapis.com/oauth2/v1/userinfo";
|
public static final String USERINFO_URL = "https://www.googleapis.com/oauth2/v1/userinfo";
|
||||||
public static final String REGEX_SEARCH_USER_PHOTO = "https?\\:\\/\\/lh([0-9]*)\\.googleusercontent\\.com/";
|
public static final String REGEX_SEARCH_USER_PHOTO = "https?\\:\\/\\/lh([0-9]*)\\.googleusercontent\\.com/";
|
||||||
|
|
||||||
public static File getOwnerAvaterFile(Context context, String accountName, boolean network) {
|
public static File getOwnerAvatarFile(Context context, String accountName, boolean network) {
|
||||||
DatabaseHelper databaseHelper = new DatabaseHelper(context);
|
DatabaseHelper databaseHelper = new DatabaseHelper(context);
|
||||||
Cursor cursor = databaseHelper.getOwner(accountName);
|
Cursor cursor = databaseHelper.getOwner(accountName);
|
||||||
String url = null;
|
String url = null;
|
||||||
if (cursor.moveToNext()) {
|
if (cursor.moveToNext()) {
|
||||||
int idx = cursor.getColumnIndex("avatar");
|
int idx = cursor.getColumnIndex("avatar");
|
||||||
if (!cursor.isNull(idx)) url = cursor.getString(idx);
|
if (idx >= 0 && !cursor.isNull(idx)) url = cursor.getString(idx);
|
||||||
}
|
}
|
||||||
cursor.close();
|
cursor.close();
|
||||||
databaseHelper.close();
|
databaseHelper.close();
|
||||||
|
@ -75,7 +75,7 @@ public class PeopleManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap getOwnerAvatarBitmap(Context context, String accountName, boolean network) {
|
public static Bitmap getOwnerAvatarBitmap(Context context, String accountName, boolean network) {
|
||||||
File avaterFile = getOwnerAvaterFile(context, accountName, network);
|
File avaterFile = getOwnerAvatarFile(context, accountName, network);
|
||||||
if (avaterFile == null) return null;
|
if (avaterFile == null) return null;
|
||||||
return BitmapFactory.decodeFile(avaterFile.getPath());
|
return BitmapFactory.decodeFile(avaterFile.getPath());
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,7 +121,7 @@ public class PeopleServiceImpl extends IPeopleService.Stub {
|
||||||
extras.putBoolean("rewindable", false);
|
extras.putBoolean("rewindable", false);
|
||||||
extras.putInt("width", 0);
|
extras.putInt("width", 0);
|
||||||
extras.putInt("height", 0);
|
extras.putInt("height", 0);
|
||||||
File avaterFile = PeopleManager.getOwnerAvaterFile(context, account, true);
|
File avaterFile = PeopleManager.getOwnerAvatarFile(context, account, true);
|
||||||
try {
|
try {
|
||||||
ParcelFileDescriptor fileDescriptor = null;
|
ParcelFileDescriptor fileDescriptor = null;
|
||||||
if (avaterFile != null) {
|
if (avaterFile != null) {
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
package org.microg.gms.ui;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.pm.ApplicationInfo;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.os.ResultReceiver;
|
|
||||||
import android.text.Html;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
|
||||||
|
|
||||||
import com.mgoogle.android.gms.R;
|
|
||||||
|
|
||||||
import org.microg.gms.gcm.GcmDatabase;
|
|
||||||
import org.microg.gms.gcm.PushRegisterService;
|
|
||||||
|
|
||||||
import static org.microg.gms.gcm.GcmConstants.EXTRA_APP;
|
|
||||||
import static org.microg.gms.gcm.GcmConstants.EXTRA_KID;
|
|
||||||
import static org.microg.gms.gcm.GcmConstants.EXTRA_PENDING_INTENT;
|
|
||||||
|
|
||||||
public class AskPushPermission extends FragmentActivity {
|
|
||||||
public static final String EXTRA_REQUESTED_PACKAGE = "package";
|
|
||||||
public static final String EXTRA_RESULT_RECEIVER = "receiver";
|
|
||||||
public static final String EXTRA_EXPLICIT = "explicit";
|
|
||||||
|
|
||||||
private GcmDatabase database;
|
|
||||||
|
|
||||||
private String packageName;
|
|
||||||
private ResultReceiver resultReceiver;
|
|
||||||
private boolean answered;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
database = new GcmDatabase(this);
|
|
||||||
|
|
||||||
packageName = getIntent().getStringExtra(EXTRA_REQUESTED_PACKAGE);
|
|
||||||
resultReceiver = getIntent().getParcelableExtra(EXTRA_RESULT_RECEIVER);
|
|
||||||
if (packageName == null || resultReceiver == null) {
|
|
||||||
answered = true;
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (database.getApp(packageName) != null) {
|
|
||||||
resultReceiver.send(Activity.RESULT_OK, Bundle.EMPTY);
|
|
||||||
answered = true;
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onDestroy() {
|
|
||||||
super.onDestroy();
|
|
||||||
if (!answered) {
|
|
||||||
resultReceiver.send(Activity.RESULT_CANCELED, Bundle.EMPTY);
|
|
||||||
}
|
|
||||||
database.close();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -24,7 +24,6 @@ import org.microg.gms.common.ForegroundServiceContext
|
||||||
import org.microg.gms.common.PackageUtils
|
import org.microg.gms.common.PackageUtils
|
||||||
import org.microg.gms.common.Utils
|
import org.microg.gms.common.Utils
|
||||||
import org.microg.gms.gcm.GcmConstants.*
|
import org.microg.gms.gcm.GcmConstants.*
|
||||||
import org.microg.gms.ui.AskPushPermission
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import kotlin.coroutines.suspendCoroutine
|
import kotlin.coroutines.suspendCoroutine
|
||||||
|
@ -97,11 +96,12 @@ class PushRegisterService : LifecycleService() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||||
WakefulBroadcastReceiver.completeWakefulIntent(intent)
|
if (intent != null) {
|
||||||
Log.d(TAG, "onStartCommand: $intent")
|
WakefulBroadcastReceiver.completeWakefulIntent(intent)
|
||||||
lifecycleScope.launchWhenStarted {
|
Log.d(TAG, "onStartCommand: $intent")
|
||||||
if (intent == null) return@launchWhenStarted
|
lifecycleScope.launchWhenStarted {
|
||||||
handleIntent(intent)
|
handleIntent(intent)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.onStartCommand(intent, flags, startId)
|
return super.onStartCommand(intent, flags, startId)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue