Various changes

- Extend Wear support
- Rework Gms Services
- Fix ProGuard
- Add Waze to Google Whitelist (as in original Play Services, fixes #116)
This commit is contained in:
Marvin W 2016-04-14 21:51:21 +02:00
commit 2a394f98aa
38 changed files with 799 additions and 635 deletions

2
extern/GmsApi vendored

@ -1 +1 @@
Subproject commit 75562ce8b6d19fccde3ca46ab853513f48832a05
Subproject commit 6aa110657beec0b3e6c26d1030943e0b97683335

2
extern/UnifiedNlp vendored

@ -1 +1 @@
Subproject commit d184e0e7f10aaad979019d3efe5fc10a68299849
Subproject commit 97b01d50d4fc54061ff8495e92217f31454acd0a

2
extern/Wearable vendored

@ -1 +1 @@
Subproject commit c12fe119c8f71b4e7b458f480270f686dae34343
Subproject commit 5c24adaa3928de68167ce31c0fa5b9b1a3256677

View file

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-all.zip

View file

@ -19,7 +19,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath 'com.android.tools.build:gradle:2.0.0'
}
}
@ -56,11 +56,11 @@ dependencies {
String getMyVersionName() {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--tags', '--always', '--dirty'
standardOutput = stdout
}
return stdout.toString().trim()
if (rootProject.file("gradlew").exists())
exec { commandLine 'git', 'describe', '--tags', '--always', '--dirty'; standardOutput = stdout }
else // automatic build system, don't tag dirty
exec { commandLine 'git', 'describe', '--tags', '--always'; standardOutput = stdout }
return stdout.toString().trim().substring(1)
}
int getMyVersionCode(String ref) {

View file

@ -79,7 +79,6 @@
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="com.google.android.c2dm.permission.SEND"/>
<uses-permission android:name="org.microg.gms.STATUS_BROADCAST"/>
<uses-permission android:name="org.microg.gms.EXTENDED_ACCESS"/>
<application
android:allowBackup="false"

View file

@ -29,30 +29,16 @@ import com.google.android.gms.common.internal.IGmsCallbacks;
import com.google.android.gms.common.internal.IGmsServiceBroker;
import com.google.android.gms.common.internal.ValidateAccountRequest;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.EnumSet;
public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
public static final int ID_ACCEPT_ALL = -1;
private static final String TAG = "GmsServiceBroker";
private final Set<Integer> supportedServiceIds;
private final EnumSet<GmsService> supportedServices;
public AbstractGmsServiceBroker(Integer supportedServiceId, Integer... supportedServiceIds) {
this(combine(supportedServiceId, supportedServiceIds));
}
private static Set<Integer> combine(Integer i, Integer... is) {
Set<Integer> integers = new HashSet<Integer>(Arrays.asList(is));
integers.add(i);
return integers;
}
public AbstractGmsServiceBroker(Set<Integer> supportedServiceIds) {
this.supportedServiceIds = supportedServiceIds;
public AbstractGmsServiceBroker(EnumSet<GmsService> supportedServices) {
this.supportedServices = supportedServices;
}
@Deprecated
@ -62,21 +48,21 @@ public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
throws RemoteException {
Bundle extras = params == null ? new Bundle() : params;
extras.putString("auth_package", authPackage);
callGetService(Services.PLUS.SERVICE_ID, callback, versionCode, packageName, extras, accountName, scopes);
callGetService(GmsService.PLUS, callback, versionCode, packageName, extras, accountName, scopes);
}
@Deprecated
@Override
public void getPanoramaService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.PANORAMA.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.PANORAMA, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getAppDataSearchService(IGmsCallbacks callback, int versionCode, String packageName)
throws RemoteException {
callGetService(Services.INDEX.SERVICE_ID, callback, versionCode, packageName);
callGetService(GmsService.INDEX, callback, versionCode, packageName);
}
@Deprecated
@ -89,28 +75,28 @@ public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
@Override
public void getPeopleService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.PEOPLE.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.PEOPLE, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getReportingService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.LOCATION_REPORTING.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.LOCATION_REPORTING, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getLocationService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.LOCATION.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.LOCATION, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getGoogleLocationManagerService(IGmsCallbacks callback, int versionCode,
String packageName, Bundle params) throws RemoteException {
callGetService(Services.LOCATION_MANAGER.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.LOCATION_MANAGER, callback, versionCode, packageName, params);
}
@Deprecated
@ -123,70 +109,70 @@ public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
extras.putString("com.google.android.gms.games.key.gamePackageName", gamePackageName);
extras.putString("com.google.android.gms.games.key.desiredLocale", desiredLocale);
//extras.putParcelable("com.google.android.gms.games.key.popupWindowToken", popupWindowToken);
callGetService(Services.GAMES.SERVICE_ID, callback, versionCode, packageName, extras, accountName, scopes);
callGetService(GmsService.GAMES, callback, versionCode, packageName, extras, accountName, scopes);
}
@Deprecated
@Override
public void getAppStateService(IGmsCallbacks callback, int versionCode, String packageName,
String accountName, String[] scopes) throws RemoteException {
callGetService(Services.APPSTATE.SERVICE_ID, callback, versionCode, packageName, null, accountName, scopes);
callGetService(GmsService.APPSTATE, callback, versionCode, packageName, null, accountName, scopes);
}
@Deprecated
@Override
public void getPlayLogService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.PLAY_LOG.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.PLAY_LOG, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getAdMobService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.ADREQUEST.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.ADREQUEST, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getDroidGuardService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.DROIDGUARD.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.DROIDGUARD, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getLockboxService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.LOCKBOX.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.LOCKBOX, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getCastMirroringService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.CAST_MIRRORING.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.CAST_MIRRORING, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getNetworkQualityService(IGmsCallbacks callback, int versionCode,
String packageName, Bundle params) throws RemoteException {
callGetService(Services.NETWORK_QUALITY.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.NETWORK_QUALITY, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getGoogleIdentityService(IGmsCallbacks callback, int versionCode,
String packageName, Bundle params) throws RemoteException {
callGetService(Services.ACCOUNT.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.ACCOUNT, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getGoogleFeedbackService(IGmsCallbacks callback, int versionCode,
String packageName, Bundle params) throws RemoteException {
callGetService(Services.FEEDBACK.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.FEEDBACK, callback, versionCode, packageName, params);
}
@Deprecated
@ -200,55 +186,55 @@ public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
@Override
public void getDriveService(IGmsCallbacks callback, int versionCode, String packageName,
String[] scopes, String accountName, Bundle params) throws RemoteException {
callGetService(Services.DRIVE.SERVICE_ID, callback, versionCode, packageName, params, accountName, scopes);
callGetService(GmsService.DRIVE, callback, versionCode, packageName, params, accountName, scopes);
}
@Deprecated
@Override
public void getLightweightAppDataSearchService(IGmsCallbacks callback, int versionCode,
String packageName) throws RemoteException {
callGetService(Services.LIGHTWEIGHT_INDEX.SERVICE_ID, callback, versionCode, packageName);
callGetService(GmsService.LIGHTWEIGHT_INDEX, callback, versionCode, packageName);
}
@Deprecated
@Override
public void getSearchAdministrationService(IGmsCallbacks callback, int versionCode,
String packageName) throws RemoteException {
callGetService(Services.SEARCH_ADMINISTRATION.SERVICE_ID, callback, versionCode, packageName);
callGetService(GmsService.SEARCH_ADMINISTRATION, callback, versionCode, packageName);
}
@Deprecated
@Override
public void getAutoBackupService(IGmsCallbacks callback, int versionCode, String packageName,
Bundle params) throws RemoteException {
callGetService(Services.PHOTO_AUTO_BACKUP.SERVICE_ID, callback, versionCode, packageName, params);
callGetService(GmsService.PHOTO_AUTO_BACKUP, callback, versionCode, packageName, params);
}
@Deprecated
@Override
public void getAddressService(IGmsCallbacks callback, int versionCode, String packageName)
throws RemoteException {
callGetService(Services.ADDRESS.SERVICE_ID, callback, versionCode, packageName);
callGetService(GmsService.ADDRESS, callback, versionCode, packageName);
}
@Deprecated
@Override
public void getWalletServiceWithPackageName(IGmsCallbacks callback, int versionCode, String packageName) throws RemoteException {
callGetService(Services.WALLET.SERVICE_ID, callback, versionCode, packageName);
callGetService(GmsService.WALLET, callback, versionCode, packageName);
}
private void callGetService(int serviceId, IGmsCallbacks callback, int gmsVersion,
private void callGetService(GmsService service, IGmsCallbacks callback, int gmsVersion,
String packageName) throws RemoteException {
callGetService(serviceId, callback, gmsVersion, packageName, null);
callGetService(service, callback, gmsVersion, packageName, null);
}
private void callGetService(int serviceId, IGmsCallbacks callback, int gmsVersion,
private void callGetService(GmsService service, IGmsCallbacks callback, int gmsVersion,
String packageName, Bundle extras) throws RemoteException {
callGetService(serviceId, callback, gmsVersion, packageName, extras, null, null);
callGetService(service, callback, gmsVersion, packageName, extras, null, null);
}
private void callGetService(int serviceId, IGmsCallbacks callback, int gmsVersion, String packageName, Bundle extras, String accountName, String[] scopes) throws RemoteException {
GetServiceRequest request = new GetServiceRequest(serviceId);
private void callGetService(GmsService service, IGmsCallbacks callback, int gmsVersion, String packageName, Bundle extras, String accountName, String[] scopes) throws RemoteException {
GetServiceRequest request = new GetServiceRequest(service.SERVICE_ID);
request.gmsVersion = gmsVersion;
request.packageName = packageName;
request.extras = extras;
@ -267,15 +253,16 @@ public abstract class AbstractGmsServiceBroker extends IGmsServiceBroker.Stub {
@Override
public void getService(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {
if (supportedServiceIds.contains(request.serviceId) || supportedServiceIds.contains(ID_ACCEPT_ALL)) {
handleServiceRequest(callback, request);
GmsService gmsService = GmsService.byServiceId(request.serviceId);
if ((supportedServices.contains(gmsService)) || supportedServices.contains(GmsService.ANY)) {
handleServiceRequest(callback, request, gmsService);
} else {
Log.d(TAG, "Service not supported: " + request);
throw new IllegalArgumentException("Service not supported: " + request.serviceId);
}
}
public abstract void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException;
public abstract void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException;
@Override
public void validateAccount(IGmsCallbacks callback, ValidateAccountRequest request) throws RemoteException {

View file

@ -26,22 +26,29 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import com.google.android.gms.common.internal.IGmsServiceBroker;
import org.microg.gms.common.GmsService;
import java.util.Arrays;
import java.util.EnumSet;
public abstract class BaseService extends Service {
private final IGmsServiceBroker broker;
protected final String TAG;
public BaseService(String tag, Integer supportedServiceId, Integer... supportedServiceIds) {
public BaseService(String tag, GmsService supportedService, GmsService... supportedServices) {
this.TAG = tag;
broker = new AbstractGmsServiceBroker(supportedServiceId, supportedServiceIds) {
EnumSet<GmsService> services = EnumSet.of(supportedService);
services.addAll(Arrays.asList(supportedServices));
broker = new AbstractGmsServiceBroker(services) {
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
try {
request.extras.keySet(); // call to unparcel()
} catch (Exception e) {
// Sometimes we need to define the correct ClassLoader before unparcel(). Ignore those.
}
Log.d(TAG, "bound by: " + request);
BaseService.this.handleServiceRequest(callback, request);
BaseService.this.handleServiceRequest(callback, request, service);
}
};
}
@ -52,5 +59,5 @@ public abstract class BaseService extends Service {
return broker.asBinder();
}
public abstract void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException;
public abstract void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException;
}

View file

@ -22,13 +22,15 @@ import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.common.GmsService;
public class DummyService extends BaseService {
public DummyService() {
super("GmsDummySvc", AbstractGmsServiceBroker.ID_ACCEPT_ALL);
super("GmsDummySvc", GmsService.ANY);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(CommonStatusCodes.ERROR, null, null);
}
}

View file

@ -20,16 +20,16 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
public class GService extends BaseService {
public GService() {
super("GmsAdsGSvc", Services.GSERVICES.SERVICE_ID, Services.ADREQUEST.SERVICE_ID);
super("GmsAdsGSvc", GmsService.GSERVICES, GmsService.ADREQUEST);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) {
// TODO
}
}

View file

@ -54,7 +54,7 @@ public class AccountContentProvider extends ContentProvider {
if (!PackageUtils.callerHasExtendedAccess(getContext())) {
String[] packagesForUid = getContext().getPackageManager().getPackagesForUid(Binder.getCallingUid());
if (packagesForUid != null && packagesForUid.length != 0)
Log.w(TAG, "Not granting access to " + Arrays.toString(packagesForUid)
Log.w(TAG, "Not granting extended access to " + Arrays.toString(packagesForUid)
+ ", signature: " + PackageUtils.firstSignatureDigest(getContext(), packagesForUid[0]));
if (getContext().checkCallingPermission(Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED)
throw new SecurityException("Access denied, missing GET_ACCOUNTS or EXTENDED_ACCESS permission");

View file

@ -23,15 +23,15 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
public class SignInService extends BaseService {
public SignInService() {
super("GmsSignInSvc", Services.SIGN_IN.SERVICE_ID);
super("GmsSignInSvc", GmsService.SIGN_IN);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
Log.d(TAG, "unimplemented Method: handleServiceRequest");
}

View file

@ -20,15 +20,15 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
public class CarService extends BaseService {
public CarService() {
super("GmsCarSvc", Services.CAR.SERVICE_ID);
super("GmsCarSvc", GmsService.CAR);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) {
// TODO
}
}

View file

@ -22,17 +22,17 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
public class ClearcutLoggerService extends BaseService {
private ClearcutLoggerServiceImpl clearcutService = new ClearcutLoggerServiceImpl();
public ClearcutLoggerService() {
super("GmsClearcutSvc", Services.CLEARCUT_LOGGER.SERVICE_ID);
super("GmsClearcutSvc", GmsService.CLEARCUT_LOGGER);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(0, clearcutService.asBinder(), null);
}
}

View file

@ -0,0 +1,57 @@
/*
* Copyright 2013-2016 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.common;
import android.os.IInterface;
import android.util.Log;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Collection;
import java.util.HashSet;
public class MultiListenerProxy<T extends IInterface> implements InvocationHandler {
private static final String TAG = "GmsMultiListener";
public static <T extends IInterface> T get(Class<T> tClass, final Collection<T> listeners) {
return (T) Proxy.newProxyInstance(tClass.getClassLoader(), new Class[]{tClass}, new MultiListenerProxy<T>(listeners));
}
private final Collection<T> listeners;
private MultiListenerProxy(Collection<T> listeners) {
this.listeners = listeners;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) {
for (T listener : new HashSet<T>(listeners)) {
try {
method.invoke(listener, args);
} catch (IllegalAccessException e) {
Log.w(TAG, e);
listeners.remove(listener);
} catch (InvocationTargetException e) {
Log.w(TAG, e.getTargetException());
listeners.remove(listener);
}
}
return null;
}
}

View file

@ -28,6 +28,7 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME;
import static org.microg.gms.common.Constants.GMS_PACKAGE_SIGNATURE_SHA1;
public class PackageUtils {
@ -37,7 +38,8 @@ public class PackageUtils {
"58e1c4133f7441ec3d2c270270a14802da47ba0e" /* Android Wear */,
"46f6c8987311e131f4f558d8e0ae145bebab6da3" /* Google Classroom */,
"24bb24c05e47e0aefa68a58a766179d9b613a600" /* Google Fit/Glass */,
"aa87ce1260c008d801197bb4ecea4ab8929da246" /* Google Inbox */};
"aa87ce1260c008d801197bb4ecea4ab8929da246" /* Google Inbox */,
"35b438fe1bc69d975dc8702dc16ab69ebf65f26f" /* Waze */};
public static boolean isGoogleSignedPackages(Context context, String packageName) {
return Arrays.asList(KNOWN_GOOGLE_SIGNATURES).contains(firstSignatureDigest(context, packageName));
@ -50,8 +52,13 @@ public class PackageUtils {
public static boolean callerHasExtendedAccess(Context context) {
String[] packagesForUid = context.getPackageManager().getPackagesForUid(Binder.getCallingUid());
return (packagesForUid != null && packagesForUid.length != 0 && isGoogleSignedPackages(context, packagesForUid[0])) ||
context.checkCallingPermission(Manifest.permission.EXTENDED_ACCESS) == PackageManager.PERMISSION_GRANTED;
if (packagesForUid != null && packagesForUid.length != 0) {
for (String packageName : packagesForUid) {
if (isGoogleSignedPackages(context, packageName) || GMS_PACKAGE_NAME.equals(packageName))
return true;
}
}
return context.checkCallingPermission(Manifest.permission.EXTENDED_ACCESS) == PackageManager.PERMISSION_GRANTED;
}
public static void checkPackageUid(Context context, String packageName, int callingUid) {

View file

@ -22,17 +22,17 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
public class DriveApiService extends BaseService {
private DriveServiceImpl impl = new DriveServiceImpl();
public DriveApiService() {
super("GmsDriveApiSvc", Services.DRIVE.SERVICE_ID);
super("GmsDriveApiSvc", GmsService.DRIVE);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(0, impl.asBinder(), null);
}
}

View file

@ -20,16 +20,16 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
public class DroidGuardService extends BaseService {
public DroidGuardService() {
super("GmsDroidGuardSvc", Services.DROIDGUARD.SERVICE_ID);
super("GmsDroidGuardSvc", GmsService.DROIDGUARD);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) {
// TODO
}
}

View file

@ -20,15 +20,15 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services;
import org.microg.gms.common.GmsService;
public class FeedbackService extends BaseService {
public FeedbackService() {
super("GmsFeedbackSvc", Services.FEEDBACK.SERVICE_ID);
super("GmsFeedbackSvc", GmsService.FEEDBACK);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) {
// TODO
}
}

View file

@ -26,7 +26,7 @@ import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import org.microg.gms.BaseService;
import org.microg.gms.common.Services.GAMES;
import org.microg.gms.common.GmsService;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME;
@ -38,11 +38,11 @@ public class GamesStubService extends BaseService {
public static final String PARAM_GAME_PACKAGE_NAME = "com.google.android.gms.games.key.gamePackageName";
public GamesStubService() {
super("GmsGamesSvc", GAMES.SERVICE_ID);
super("GmsGamesSvc", GmsService.GAMES);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request) throws RemoteException {
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
String packageName = null;
if (request.extras != null) {
packageName = request.extras.getString(PARAM_GAME_PACKAGE_NAME);

Some files were not shown because too many files have changed in this diff Show more