Merge pull request #7 from Mattis6666/master

Write readme, remove unnecessary MicroG settings ui elements
This commit is contained in:
Tornike Khintibidze 2020-07-17 21:22:53 +04:00 committed by GitHub
commit b25b177c61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
43 changed files with 77 additions and 2333 deletions

View File

@ -1,24 +1,19 @@
<img src="http://i.imgur.com/hXY4lcC.png" height="42px" alt="microG" /> Services Core (GmsCore)
=======
[![Build Status](https://travis-ci.org/microg/android_packages_apps_GmsCore.svg?branch=master)](https://travis-ci.org/microg/android_packages_apps_GmsCore)
# Vanced MicroG
[![Build Status](https://travis-ci.org/YTVanced/VancedMicroG.svg?branch=master)](https://travis-ci.com/github/YTVanced/VancedMicroG)
microG GmsCore is a FLOSS (Free/Libre Open Source Software) framework to allow applications designed for Google Play Services to run on systems, where Play Services is not available.
### Please refer to the [wiki](https://github.com/microg/android_packages_apps_GmsCore/wiki) for downloads and instructions
This fork tweaks MicroG to be usable by applications that require Google authentication such as Youtube Vanced.
## Notable changes
License
-------
Copyright 2013-2019 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.
- No longer a system app
- Package name changed from `com.google.android.gms` to `com.mgoogle.android.gms` to support installation alongside the official MicroG
- Removed unnecessary features:
- Maps & Location
- Wear-Api
- Safetynet
- Games
- Car
- Removed all permissions, as none are required for Google authentication

View File

@ -197,38 +197,6 @@
</intent-filter>
</service>
<!-- Car -->
<service android:name="org.microg.gms.car.CarService">
<intent-filter>
<action android:name="com.google.android.gms.car.service.START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<!-- People -->
<service android:name="org.microg.gms.people.PeopleService">
<intent-filter>
<action android:name="com.google.android.gms.people.service.START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<service
android:name="org.microg.gms.people.ContactSyncService"
android:exported="false">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/contact_syncadapter" />
</service>
<!-- Auth -->
<service android:name="org.microg.gms.auth.loginservice.GoogleLoginService">
@ -295,24 +263,6 @@
android:authorities="com.mgoogle.android.gms.auth.accounts"
android:exported="true" />
<!-- Games -->
<service android:name="org.microg.gms.games.GamesStubService">
<intent-filter>
<action android:name="com.google.android.gms.games.service.START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<activity
android:name="org.microg.gms.games.UpgradeActivity"
android:theme="@style/Theme.AppCompat.DayNight.Dialog">
<intent-filter>
<action android:name="com.google.android.gms.games.PLAY_GAMES_UPGRADE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- Cast -->
<service android:name="com.google.android.gms.cast.media.CastMediaRouteProviderService">
@ -321,12 +271,6 @@
</intent-filter>
</service>
<!-- Chimera spoof -->
<provider
android:name="org.microg.gms.ChimeraSpoofProvider"
android:authorities="com.mgoogle.android.gms.chimera"
android:exported="true" />
<!-- microG custom UI -->
<!-- microG Settings shown in Launcher -->
@ -477,60 +421,18 @@
android:name="com.google.android.gms.gcm.http.GoogleHttpService"
android:exported="true" />
<service android:name="org.microg.gms.ads.GService">
<intent-filter>
<action android:name="com.google.android.gms.ads.gservice.START" />
</intent-filter>
</service>
<service android:name="org.microg.gms.feedback.FeedbackService">
<intent-filter>
<action android:name="com.google.android.gms.feedback.internal.IFeedbackService" />
</intent-filter>
</service>
<service android:name="org.microg.gms.ads.AdvertisingIdService">
<intent-filter>
<action android:name="com.google.android.gms.ads.identifier.service.START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<service android:name="org.microg.gms.clearcut.ClearcutLoggerService">
<intent-filter>
<action android:name="com.google.android.gms.clearcut.service.START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<service android:name="org.microg.gms.drive.api.DriveApiService">
<intent-filter>
<action android:name="com.google.android.gms.drive.ApiService.START" />
<action android:name="com.google.android.gms.drive.ApiService.STOP" />
<action android:name="com.google.android.gms.drive.ApiService.RESET_AFTER_BOOT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<service android:name="org.microg.gms.auth.SignInService">
<intent-filter>
<action android:name="com.google.android.gms.signin.service.START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<service android:name="org.microg.gms.reminders.RemindersService">
<intent-filter>
<action android:name="com.google.android.gms.reminders.service.START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<service android:name="org.microg.gms.wallet.PaymentService">
<intent-filter>
<action android:name="com.google.android.gms.wallet.service.BIND" />
</intent-filter>
</service>
<service android:name="org.microg.gms.tapandpay.TapAndPayService">
<intent-filter>
<action android:name="com.google.android.gms.tapandpay.service.BIND" />
</intent-filter>
</service>
<service android:name="org.microg.gms.cast.CastDeviceControllerService">
<intent-filter>

View File

@ -1,22 +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 com.google.android.gms.ads;
import android.app.Activity;
public class AdActivity extends Activity {
}

View File

@ -1,20 +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 com.google.android.gms.ads;
public class AdManagerCreatorImpl extends AdManagerCreator.Stub {
}

View File

@ -1,72 +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 com.google.android.gms.chimera.container;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.pm.PackageManager;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.dynamic.ObjectWrapper;
import com.google.android.gms.dynamite.IDynamiteLoader;
import org.microg.gms.common.Constants;
public class DynamiteLoaderImpl extends IDynamiteLoader.Stub {
private static final String TAG = "GmsDynamiteLoaderImpl";
@Override
public IObjectWrapper createModuleContext(IObjectWrapper wrappedContext, String moduleId, int minVersion) throws RemoteException {
Log.d(TAG, "unimplemented Method: createModuleContext for " + moduleId + " at version " + minVersion + ", returning gms context");
final Context context = (Context) ObjectWrapper.unwrap(wrappedContext);
try {
return ObjectWrapper.wrap(new ContextWrapper(context.createPackageContext(Constants.GMS_PACKAGE_NAME, Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY)) {
@Override
public Context getApplicationContext() {
return context;
}
});
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "returning null instead", e);
return null;
}
}
@Override
public int getModuleVersion(IObjectWrapper context, String moduleId) throws RemoteException {
return getModuleVersion2(context, moduleId, true);
}
@Override
public int getModuleVersion2(IObjectWrapper context, String moduleId, boolean updateConfigIfRequired) throws RemoteException {
if (moduleId.equals("com.google.android.gms.firebase_database")) {
Log.d(TAG, "returning temp fix module version for " + moduleId + ". Firebase Database will not be functional!");
return com.google.android.gms.dynamite.descriptors.com.google.android.gms.firebase_database.ModuleDescriptor.MODULE_VERSION;
}
if (moduleId.equals("com.google.android.gms.googlecertificates")) {
return com.google.android.gms.dynamite.descriptors.com.google.android.gms.googlecertificates.ModuleDescriptor.MODULE_VERSION;
}
if (moduleId.equals("com.google.android.gms.cast.framework.dynamite")) {
Log.d(TAG, "returning temp fix module version for " + moduleId + ". Cast API wil not be functional!");
return 1;
}
Log.d(TAG, "unimplemented Method: getModuleVersion for " + moduleId);
return 0;
}
}

View File

@ -1,40 +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 com.google.android.gms.plus.plusone;
import android.content.Context;
import android.os.RemoteException;
import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.dynamic.ObjectWrapper;
import com.google.android.gms.plus.internal.IPlusOneButtonCreator;
import org.microg.gms.auth.AuthConstants;
import org.microg.gms.plus.PlusOneButtonImpl;
public class PlusOneButtonCreatorImpl extends IPlusOneButtonCreator.Stub {
@Override
public IObjectWrapper create(IObjectWrapper context, int size, int annotation, String url, int activityRequestCode) throws RemoteException {
Context ctx = (Context) ObjectWrapper.unwrap(context);
return ObjectWrapper.wrap(new PlusOneButtonImpl(ctx, size, annotation, url, AuthConstants.DEFAULT_ACCOUNT));
}
@Override
public IObjectWrapper createForAccount(IObjectWrapper context, int size, int annotation, String url, String account) throws RemoteException {
Context ctx = (Context) ObjectWrapper.unwrap(context);
return ObjectWrapper.wrap(new PlusOneButtonImpl(ctx, size, annotation, url, account));
}
}

View File

@ -1,20 +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 com.google.android.gms.wallet.dynamite;
public class WalletDynamiteCreatorImpl {
}

View File

@ -1,28 +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.ads;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
public class AdvertisingIdService extends Service {
@Override
public IBinder onBind(Intent intent) {
return new AdvertisingIdServiceImpl().asBinder();
}
}

View File

@ -1,45 +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.ads;
import android.os.RemoteException;
import com.google.android.gms.ads.identifier.internal.IAdvertisingIdService;
import java.util.UUID;
public class AdvertisingIdServiceImpl extends IAdvertisingIdService.Stub {
@Override
public String getAdvertisingId() throws RemoteException {
return generateAdvertisingId(null);
}
@Override
public boolean isAdTrackingLimited(boolean defaultHint) throws RemoteException {
return true;
}
@Override
public String generateAdvertisingId(String packageName) throws RemoteException {
return UUID.randomUUID().toString();
}
@Override
public void setAdTrackingLimited(String packageName, boolean limited) throws RemoteException {
// Ignored, sorry :)
}
}

View File

@ -1,35 +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.ads;
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.GmsService;
public class GService extends BaseService {
public GService() {
super("GmsAdsGSvc", GmsService.GSERVICES, GmsService.ADREQUEST);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) {
// TODO
}
}

View File

@ -1,34 +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.car;
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.GmsService;
public class CarService extends BaseService {
public CarService() {
super("GmsCarSvc", GmsService.CAR);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) {
// TODO
}
}

View File

@ -1,38 +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.drive.api;
import android.os.RemoteException;
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.GmsService;
public class DriveApiService extends BaseService {
private DriveServiceImpl impl = new DriveServiceImpl();
public DriveApiService() {
super("GmsDriveApiSvc", GmsService.DRIVE);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(0, impl.asBinder(), null);
}
}

View File

@ -1,318 +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.drive.api;
import android.content.IntentSender;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.drive.internal.AddEventListenerRequest;
import com.google.android.gms.drive.internal.AddPermissionRequest;
import com.google.android.gms.drive.internal.AuthorizeAccessRequest;
import com.google.android.gms.drive.internal.CancelPendingActionsRequest;
import com.google.android.gms.drive.internal.ChangeResourceParentsRequest;
import com.google.android.gms.drive.internal.CheckResourceIdsExistRequest;
import com.google.android.gms.drive.internal.CloseContentsAndUpdateMetadataRequest;
import com.google.android.gms.drive.internal.CloseContentsRequest;
import com.google.android.gms.drive.internal.ControlProgressRequest;
import com.google.android.gms.drive.internal.CreateContentsRequest;
import com.google.android.gms.drive.internal.CreateFileIntentSenderRequest;
import com.google.android.gms.drive.internal.CreateFileRequest;
import com.google.android.gms.drive.internal.CreateFolderRequest;
import com.google.android.gms.drive.internal.DeleteResourceRequest;
import com.google.android.gms.drive.internal.DisconnectRequest;
import com.google.android.gms.drive.internal.DriveServiceResponse;
import com.google.android.gms.drive.internal.FetchThumbnailRequest;
import com.google.android.gms.drive.internal.GetChangesRequest;
import com.google.android.gms.drive.internal.GetDriveIdFromUniqueIdRequest;
import com.google.android.gms.drive.internal.GetMetadataRequest;
import com.google.android.gms.drive.internal.GetPermissionsRequest;
import com.google.android.gms.drive.internal.IDriveService;
import com.google.android.gms.drive.internal.IDriveServiceCallbacks;
import com.google.android.gms.drive.internal.IEventCallback;
import com.google.android.gms.drive.internal.ListParentsRequest;
import com.google.android.gms.drive.internal.LoadRealtimeRequest;
import com.google.android.gms.drive.internal.OpenContentsRequest;
import com.google.android.gms.drive.internal.OpenFileIntentSenderRequest;
import com.google.android.gms.drive.internal.RealtimeDocumentSyncRequest;
import com.google.android.gms.drive.internal.RemoveEventListenerRequest;
import com.google.android.gms.drive.internal.RemovePermissionRequest;
import com.google.android.gms.drive.internal.SetDrivePreferencesRequest;
import com.google.android.gms.drive.internal.SetFileUploadPreferencesRequest;
import com.google.android.gms.drive.internal.SetResourceParentsRequest;
import com.google.android.gms.drive.internal.StreamContentsRequest;
import com.google.android.gms.drive.internal.TrashResourceRequest;
import com.google.android.gms.drive.internal.UnsubscribeResourceRequest;
import com.google.android.gms.drive.internal.UntrashResourceRequest;
import com.google.android.gms.drive.internal.UpdateMetadataRequest;
import com.google.android.gms.drive.internal.UpdatePermissionRequest;
public class DriveServiceImpl extends IDriveService.Stub {
private static final String TAG = "GmsDriveSvcImpl";
@Override
public void getMetadata(GetMetadataRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getMetadata");
}
@Override
public void updateMetadata(UpdateMetadataRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: updateMetadata");
}
@Override
public void createContents(CreateContentsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: createContents");
}
@Override
public void createFile(CreateFileRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: createFile");
}
@Override
public void createFolder(CreateFolderRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: createFolder");
}
@Override
public DriveServiceResponse openContents(OpenContentsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: openContents");
return null;
}
@Override
public void closeContents(CloseContentsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: closeContents");
}
@Override
public void requestSync(IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: requestSync");
}
@Override
public IntentSender openFileIntentSender(OpenFileIntentSenderRequest request) throws RemoteException {
Log.d(TAG, "unimplemented Method: openFileIntentSender");
return null;
}
@Override
public IntentSender createFileIntentSender(CreateFileIntentSenderRequest request) throws RemoteException {
Log.d(TAG, "unimplemented Method: createFileIntentSender");
return null;
}
@Override
public void authorizeAccess(AuthorizeAccessRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: authorizeAccess");
}
@Override
public void listParents(ListParentsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: listParents");
}
@Override
public void addEventListener(AddEventListenerRequest request, IEventCallback callback, String unused, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: addEventListener");
}
@Override
public void removeEventListener(RemoveEventListenerRequest request, IEventCallback callback, String unused, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: removeEventListener");
}
@Override
public void disconnect(DisconnectRequest request) throws RemoteException {
Log.d(TAG, "unimplemented Method: disconnect");
}
@Override
public void trashResource(TrashResourceRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: trashResource");
}
@Override
public void closeContentsAndUpdateMetadata(CloseContentsAndUpdateMetadataRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: closeContentsAndUpdateMetadata");
}
@Override
public void deleteResource(DeleteResourceRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: deleteResource");
}
@Override
public void loadRealtime(LoadRealtimeRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: loadRealtime");
}
@Override
public void setResourceParents(SetResourceParentsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: setResourceParents");
}
@Override
public void getDriveIdFromUniqueId(GetDriveIdFromUniqueIdRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getDriveIdFromUniqueId");
}
@Override
public void checkResourceIdsExist(CheckResourceIdsExistRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: checkResourceIdsExist");
}
@Override
public void completePendingAction(IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: completePendingAction");
}
@Override
public void getDrivePreferences(IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getDrivePreferences");
}
@Override
public void setDrivePreferences(SetDrivePreferencesRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: setDrivePreferences");
}
@Override
public void realtimeDocumentSync(RealtimeDocumentSyncRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: realtimeDocumentSync");
}
@Override
public void getDeviceUsagePreferences(IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getDeviceUsagePreferences");
}
@Override
public void setFileUploadPreferences(SetFileUploadPreferencesRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: setFileUploadPreferences");
}
@Override
public void cancelPendingActions(CancelPendingActionsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: cancelPendingActions");
}
@Override
public void untrashResource(UntrashResourceRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: untrashResource");
}
@Override
public void isAutoBackupEnabled(IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: isAutoBackupEnabled");
}
@Override
public void fetchThumbnail(FetchThumbnailRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: fetchThumbnail");
}
@Override
public void getChanges(GetChangesRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getChanges");
}
@Override
public void unsubscribeResource(UnsubscribeResourceRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: unsubscribeResource");
}
@Override
public void getPermissions(GetPermissionsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getPermissions");
}
@Override
public void addPermission(AddPermissionRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: addPermission");
}
@Override
public void updatePermission(UpdatePermissionRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: updatePermission");
}
@Override
public void removePermission(RemovePermissionRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: removePermission");
}
@Override
public void removeQueryResultListener(IEventCallback callback, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: removeQueryResultListener");
}
@Override
public void controlProgress(ControlProgressRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: controlProgress");
}
@Override
public void changeResourceParents(ChangeResourceParentsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: changeResourceParents");
}
@Override
public DriveServiceResponse streamContents(StreamContentsRequest request, IDriveServiceCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: streamContents");
return null;
}
}

View File

@ -1,34 +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.feedback;
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.GmsService;
public class FeedbackService extends BaseService {
public FeedbackService() {
super("GmsFeedbackSvc", GmsService.FEEDBACK);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) {
// TODO
}
}

View File

@ -1,58 +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.games;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.os.RemoteException;
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.BaseService;
import org.microg.gms.common.GmsService;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME;
import static org.microg.gms.games.UpgradeActivity.ACTION_PLAY_GAMES_UPGRADE;
import static org.microg.gms.games.UpgradeActivity.EXTRA_GAME_PACACKE_NAME;
public class GamesStubService extends BaseService {
public static final String PARAM_GAME_PACKAGE_NAME = "com.google.android.gms.games.key.gamePackageName";
public GamesStubService() {
super("GmsGamesSvc", GmsService.GAMES);
}
@Override
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);
}
if (packageName == null) packageName = GMS_PACKAGE_NAME;
Intent intent = new Intent(ACTION_PLAY_GAMES_UPGRADE);
intent.setPackage(GMS_PACKAGE_NAME);
intent.putExtra(EXTRA_GAME_PACACKE_NAME, packageName);
Bundle bundle = new Bundle();
bundle.putParcelable("pendingIntent", PendingIntent.getActivity(this, packageName.hashCode(), intent, FLAG_UPDATE_CURRENT));
callback.onPostInitComplete(CommonStatusCodes.RESOLUTION_REQUIRED, null, bundle);
}
}

View File

@ -1,73 +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.games;
import android.app.Activity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.mgoogle.android.gms.R;
public class UpgradeActivity extends Activity {
public static final String ACTION_PLAY_GAMES_UPGRADE = "com.google.android.gms.games.PLAY_GAMES_UPGRADE";
public static final String EXTRA_GAME_PACACKE_NAME = "com.google.android.gms.games.GAME_PACKAGE_NAME";
private static final String TAG = "GmsUpgActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.games_info);
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);
String packageName = getIntent().getStringExtra(EXTRA_GAME_PACACKE_NAME);
// 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);
((ImageView) findViewById(R.id.app_icon)).setImageDrawable(appIcon);
((TextView) findViewById(R.id.title)).setText(getString(R.string.games_info_title, appLabel));
findViewById(android.R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}

View File

@ -1,39 +1,39 @@
/*
* Copyright (C) 2018 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.
*/
/*
* Copyright (C) 2018 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.measurement;
package org.microg.gms.measurement;
import android.os.RemoteException;
import android.util.Log;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.common.internal.GetServiceRequest;
import com.google.android.gms.common.internal.IGmsCallbacks;
import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.api.Status;
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.GmsService;
import org.microg.gms.BaseService;
import org.microg.gms.common.GmsService;
public class MeasurementBrokerService extends BaseService {
public MeasurementBrokerService() {
super("GmsMeasureBrokerSvc", GmsService.MEASUREMENT);
}
public class MeasurementBrokerService extends BaseService {
public MeasurementBrokerService() {
super("GmsMeasureBrokerSvc", GmsService.MEASUREMENT);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(CommonStatusCodes.SUCCESS, new MeasurementServiceImpl().asBinder(), null);
}
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(CommonStatusCodes.SUCCESS, new MeasurementServiceImpl().asBinder(), null);
}
}

View File

@ -1,34 +1,34 @@
/*
* Copyright (C) 2018 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.
*/
/*
* Copyright (C) 2018 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.measurement;
package org.microg.gms.measurement;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.measurement.internal.IMeasurementService;
import com.google.android.gms.measurement.internal.IMeasurementService;
public class MeasurementServiceImpl extends IMeasurementService.Stub {
private static final String TAG = "GmsMeasureSvcImpl";
public class MeasurementServiceImpl extends IMeasurementService.Stub {
private static final String TAG = "GmsMeasureSvcImpl";
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
if (super.onTransact(code, data, reply, flags)) return true;
Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
return false;
}
}
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
if (super.onTransact(code, data, reply, flags)) return true;
Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
return false;
}
}

View File

@ -52,9 +52,7 @@ public class PeopleServiceImpl extends IPeopleService.Stub {
@Override
public void loadOwners(final IPeopleCallbacks callbacks, boolean var2, boolean var3, final String accountName, String var5, int sortOrder) {
Log.d(TAG, "loadOwners: " + var2 + ", " + var3 + ", " + accountName + ", " + var5 + ", " + sortOrder);
if (context.checkCallingPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
PackageUtils.assertExtendedAccess(context);
}
AccountManager accountManager = AccountManager.get(context);
Bundle accountMetadata = new Bundle();
String accountType = AuthConstants.DEFAULT_ACCOUNT_TYPE;

View File

@ -1,36 +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.places;
import android.os.RemoteException;
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.GmsService;
public class GeoDataService extends BaseService {
public GeoDataService() {
super("GmsPlcGeoSvc", GmsService.GEODATA);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(0, new PlacesServiceImpl().asBinder(), null);
}
}

View File

@ -1,37 +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.places;
import android.os.RemoteException;
import android.util.Log;
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.GmsService;
public class PlaceDetectionService extends BaseService {
public PlaceDetectionService() {
super("GmsPlcDtctSvc", GmsService.PLACE_DETECTION);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(0, new PlaceDetectionServiceImpl().asBinder(), null);
}
}

View File

@ -1,34 +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.places;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.location.places.internal.IGooglePlaceDetectionService;
public class PlaceDetectionServiceImpl extends IGooglePlaceDetectionService.Stub{
private static final String TAG = "GmsPlcDtctSvcImpl";
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
if (super.onTransact(code, data, reply, flags)) return true;
Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
return false;
}
}

View File

@ -1,34 +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.places;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.location.places.internal.IGooglePlacesService;
public class PlacesServiceImpl extends IGooglePlacesService.Stub {
private static final String TAG = "GmsPlcSvcImpl";
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
if (super.onTransact(code, data, reply, flags)) return true;
Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
return false;
}
}

View File

@ -1,27 +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.plus;
import android.content.Context;
import android.view.View;
public class PlusOneButtonImpl extends View {
public PlusOneButtonImpl(Context context, int size, int annotation, String url,
String account) {
super(context);
}
}

View File

@ -1,37 +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.reminders;
import android.os.RemoteException;
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.GmsService;
public class RemindersService extends BaseService {
public RemindersService() {
super("GmsRemindSvc", GmsService.REMINDERS);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(0, new RemindersServiceImpl(), null);
}
}

View File

@ -1,169 +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.reminders;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.reminders.AccountState;
import com.google.android.gms.reminders.CreateReminderOptionsInternal;
import com.google.android.gms.reminders.LoadRemindersOptions;
import com.google.android.gms.reminders.ReindexDueDatesOptions;
import com.google.android.gms.reminders.UpdateRecurrenceOptions;
import com.google.android.gms.reminders.internal.IRemindersCallbacks;
import com.google.android.gms.reminders.internal.IRemindersService;
import com.google.android.gms.reminders.model.CustomizedSnoozePresetEntity;
import com.google.android.gms.reminders.model.TaskEntity;
import com.google.android.gms.reminders.model.TaskIdEntity;
import java.util.List;
public class RemindersServiceImpl extends IRemindersService.Stub {
private static final String TAG = RemindersServiceImpl.class.getSimpleName();
@Override
public void loadReminders(IRemindersCallbacks callbacks, LoadRemindersOptions options) throws RemoteException {
Log.d(TAG, "unimplemented Method: loadReminders");
}
@Override
public void addListener(IRemindersCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: addListener");
}
@Override
public void createReminder(IRemindersCallbacks callbacks, TaskEntity task) throws RemoteException {
Log.d(TAG, "unimplemented Method: createReminder");
}
@Override
public void updateReminder(IRemindersCallbacks callbacks, TaskEntity task) throws RemoteException {
Log.d(TAG, "unimplemented Method: updateReminder");
}
@Override
public void deleteReminder(IRemindersCallbacks callbacks, TaskIdEntity taskId) throws RemoteException {
Log.d(TAG, "unimplemented Method: deleteReminder");
}
@Override
public void bumpReminder(IRemindersCallbacks callbacks, TaskIdEntity taskId) throws RemoteException {
Log.d(TAG, "unimplemented Method: bumpReminder");
}
@Override
public void hasUpcomingReminders(IRemindersCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: hasUpcomingReminders");
}
@Override
public void createRecurrence(IRemindersCallbacks callbacks, TaskEntity task) throws RemoteException {
Log.d(TAG, "unimplemented Method: createRecurrence");
}
@Override
public void updateRecurrence(IRemindersCallbacks callbacks, String s1, TaskEntity task, UpdateRecurrenceOptions options) throws RemoteException {
Log.d(TAG, "unimplemented Method: updateRecurrence");
}
@Override
public void deleteRecurrence(IRemindersCallbacks callbacks, String s1, UpdateRecurrenceOptions options) throws RemoteException {
Log.d(TAG, "unimplemented Method: deleteRecurrence");
}
@Override
public void changeRecurrence(IRemindersCallbacks callbacks, String s1, TaskEntity task, UpdateRecurrenceOptions options) throws RemoteException {
Log.d(TAG, "unimplemented Method: changeRecurrence");
}
@Override
public void makeTaskRecurring(IRemindersCallbacks callbacks, TaskEntity task) throws RemoteException {
Log.d(TAG, "unimplemented Method: makeTaskRecurring");
}
@Override
public void makeRecurrenceSingleInstance(IRemindersCallbacks callbacks, String s1, TaskEntity task, UpdateRecurrenceOptions options) throws RemoteException {
Log.d(TAG, "unimplemented Method: makeRecurrenceSingleInstance");
}
@Override
public void clearListeners() throws RemoteException {
Log.d(TAG, "unimplemented Method: clearListeners");
}
@Override
public void batchUpdateReminders(IRemindersCallbacks callbacks, List<TaskEntity> tasks) throws RemoteException {
Log.d(TAG, "unimplemented Method: batchUpdateReminders");
}
@Override
public void createReminderWithOptions(IRemindersCallbacks callbacks, TaskEntity task, CreateReminderOptionsInternal options) throws RemoteException {
Log.d(TAG, "unimplemented Method: createReminderWithOptions");
}
@Override
public void getCustomizedSnoozePreset(IRemindersCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getCustomizedSnoozePreset");
}
@Override
public void setCustomizedSnoozePreset(IRemindersCallbacks callbacks, CustomizedSnoozePresetEntity preset) throws RemoteException {
Log.d(TAG, "unimplemented Method: setCustomizedSnoozePreset");
}
@Override
public void setAccountState(IRemindersCallbacks callbacks, AccountState accountState) throws RemoteException {
Log.d(TAG, "unimplemented Method: setAccountState");
}
@Override
public void getAccountState(IRemindersCallbacks callbacks) throws RemoteException {
Log.d(TAG, "unimplemented Method: getAccountState");
}
@Override
public void checkReindexDueDatesNeeded(IRemindersCallbacks callbacks, ReindexDueDatesOptions options) throws RemoteException {
Log.d(TAG, "unimplemented Method: checkReindexDueDatesNeeded");
}
@Override
public void reindexDueDates(IRemindersCallbacks callbacks, ReindexDueDatesOptions options) throws RemoteException {
Log.d(TAG, "unimplemented Method: reindexDueDates");
}
}

View File

@ -1,33 +0,0 @@
/*
* Copyright (C) 2019 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.tapandpay;
import com.google.android.gms.tapandpay.internal.ITapAndPayService;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
public class TapAndPayImpl extends ITapAndPayService.Stub {
private static final String TAG = "GmsTapAndPayImpl";
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
if (super.onTransact(code, data, reply, flags)) return true;
Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
return false;
}
}

View File

@ -1,38 +0,0 @@
/*
* Copyright (C) 2019 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.tapandpay;
import android.os.RemoteException;
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.BaseService;
import org.microg.gms.common.GmsService;
public class TapAndPayService extends BaseService {
public TapAndPayService() {
super("GmsTapAndPaySvc", GmsService.TAP_AND_PAY);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(CommonStatusCodes.SUCCESS, new TapAndPayImpl(), null);
}
}

View File

@ -64,36 +64,4 @@ public class Conditions {
v.getContext().startActivity(intent);
}
}).build();
private static final String[] REQUIRED_PERMISSIONS = new String[]{ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, GET_ACCOUNTS, READ_PHONE_STATE};
public static final Condition PERMISSIONS = new Condition.Builder()
.title(R.string.cond_perm_title)
.summaryPlurals(R.plurals.cond_perm_summary)
.evaluation(new Condition.Evaluation() {
int count = 0;
@Override
public boolean isActive(Context context) {
count = 0;
if (SDK_INT >= Build.VERSION_CODES.M) {
for (String permission : REQUIRED_PERMISSIONS) {
if (ContextCompat.checkSelfPermission(context, permission) != PERMISSION_GRANTED)
count++;
}
}
return count > 0;
}
@Override
public int getPluralsCount() {
return count;
}
})
.firstActionPlurals(R.plurals.cond_perm_action, new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getContext() instanceof Activity) {
ActivityCompat.requestPermissions((Activity) v.getContext(), REQUIRED_PERMISSIONS, 0);
}
}
}).build();
}

View File

@ -23,11 +23,9 @@ import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import org.microg.tools.selfcheck.InstalledPackagesChecks;
//import org.microg.tools.selfcheck.NlpOsCompatChecks;
//import org.microg.tools.selfcheck.NlpStatusChecks;
import org.microg.tools.selfcheck.PermissionCheckGroup;
import org.microg.tools.selfcheck.RomSpoofSignatureChecks;
import org.microg.tools.selfcheck.SelfCheckGroup;
import org.microg.tools.selfcheck.SystemChecks;
import org.microg.tools.ui.AbstractSelfCheckFragment;
@ -46,8 +44,6 @@ public class SelfCheckFragment extends AbstractSelfCheckFragment {
@Override
protected void prepareSelfCheckList(List<SelfCheckGroup> checks) {
checks.add(new RomSpoofSignatureChecks());
checks.add(new InstalledPackagesChecks());
if (SDK_INT > LOLLIPOP_MR1) {
checks.add(new PermissionCheckGroup(ACCESS_COARSE_LOCATION, "android.permission.ACCESS_BACKGROUND_LOCATION", WRITE_EXTERNAL_STORAGE, GET_ACCOUNTS, READ_PHONE_STATE));
}

View File

@ -38,7 +38,6 @@ public class SettingsActivity extends AbstractDashboardActivity {
public SettingsActivity() {
preferencesResource = R.xml.preferences_start;
addCondition(Conditions.GCM_BATTERY_OPTIMIZATIONS);
addCondition(Conditions.PERMISSIONS);
}
@Override
@ -81,7 +80,6 @@ public class SettingsActivity extends AbstractDashboardActivity {
findPreference(PREF_GCM).setSummary(R.string.abc_capital_off);
}
findPreference(PREF_SNET).setSummary(R.string.service_status_disabled);
// Preferences unifiedNlPrefs = new Preferences(getContext());
// int backendCount = TextUtils.isEmpty(unifiedNlPrefs.getLocationBackends()) ? 0 :

View File

@ -1,38 +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.wallet;
import android.content.Context;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;
import com.google.android.gms.wallet.internal.IOwService;
public class OwServiceImpl extends IOwService.Stub {
private static final String TAG = "GmsWalletOwSvc";
public OwServiceImpl(Context context) {
}
@Override
public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
if (super.onTransact(code, data, reply, flags)) return true;
Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
return false;
}
}

View File

@ -1,37 +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.wallet;
import android.os.RemoteException;
import android.util.Log;
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.GmsService;
public class PaymentService extends BaseService {
public PaymentService() {
super("GmsWalletPaySvc", GmsService.WALLET);
}
@Override
public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
callback.onPostInitComplete(0, new OwServiceImpl(this), null);
}
}

View File

@ -1,68 +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.tools.selfcheck;
import android.content.Context;
import android.content.pm.PackageManager;
import com.mgoogle.android.gms.R;
import org.microg.gms.common.Constants;
import org.microg.gms.common.PackageUtils;
import static org.microg.tools.selfcheck.SelfCheckGroup.Result.Negative;
import static org.microg.tools.selfcheck.SelfCheckGroup.Result.Positive;
public class InstalledPackagesChecks implements SelfCheckGroup {
@Override
public String getGroupName(Context context) {
return context.getString(R.string.self_check_cat_gms_packages);
}
@Override
public void doChecks(Context context, ResultCollector collector) {
addPackageInstalledAndSignedResult(context, collector, context.getString(R.string.self_check_pkg_gms), Constants.GMS_PACKAGE_NAME, Constants.GMS_PACKAGE_SIGNATURE_SHA1);
addPackageInstalledAndSignedResult(context, collector, context.getString(R.string.self_check_pkg_vending), "com.android.vending", Constants.GMS_PACKAGE_SIGNATURE_SHA1);
addPackageInstalledResult(context, collector, context.getString(R.string.self_check_pkg_gsf), Constants.GSF_PACKAGE_NAME);
}
private void addPackageInstalledAndSignedResult(Context context, ResultCollector collector, String nicePackageName, String androidPackageName, String signatureHash) {
if (addPackageInstalledResult(context, collector, nicePackageName, androidPackageName)) {
addPackageSignedResult(context, collector, nicePackageName, androidPackageName, signatureHash);
}
}
private boolean addPackageSignedResult(Context context, ResultCollector collector, String nicePackageName, String androidPackageName, String signatureHash) {
boolean hashMatches = signatureHash.equals(PackageUtils.firstSignatureDigest(context, androidPackageName));
collector.addResult(context.getString(R.string.self_check_name_correct_sig, nicePackageName), hashMatches ? Positive : Negative,
context.getString(R.string.self_check_resolution_correct_sig, nicePackageName));
return hashMatches;
}
private boolean addPackageInstalledResult(Context context, ResultCollector collector, String nicePackageName, String androidPackageName) {
boolean packageExists = true;
try {
context.getPackageManager().getPackageInfo(androidPackageName, 0);
} catch (PackageManager.NameNotFoundException e) {
packageExists = false;
}
collector.addResult(context.getString(R.string.self_check_name_app_installed, nicePackageName), packageExists ? Positive : Negative,
context.getString(R.string.self_check_resolution_app_installed, nicePackageName));
return packageExists;
}
}

View File

@ -1,84 +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.tools.selfcheck;
import android.content.Context;
import android.content.pm.PackageManager;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.mgoogle.android.gms.R;
import org.microg.gms.common.Constants;
import org.microg.gms.common.PackageUtils;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static org.microg.gms.common.Constants.GMS_PACKAGE_SIGNATURE_SHA1;
import static org.microg.tools.selfcheck.SelfCheckGroup.Result.Negative;
import static org.microg.tools.selfcheck.SelfCheckGroup.Result.Positive;
import static org.microg.tools.selfcheck.SelfCheckGroup.Result.Unknown;
public class RomSpoofSignatureChecks implements SelfCheckGroup {
public static final String FAKE_SIGNATURE_PERMISSION = "android.permission.FAKE_PACKAGE_SIGNATURE";
@Override
public String getGroupName(Context context) {
return context.getString(R.string.self_check_cat_fake_sig);
}
@Override
public void doChecks(Context context, ResultCollector collector) {
boolean hasPermission = addRomKnowsFakeSignaturePermission(context, collector);
if (hasPermission) {
addSystemGrantsFakeSignaturePermission(context, collector);
}
addSystemSpoofsSignature(context, collector);
}
private boolean addRomKnowsFakeSignaturePermission(Context context, ResultCollector collector) {
boolean knowsPermission = true;
try {
context.getPackageManager().getPermissionInfo(FAKE_SIGNATURE_PERMISSION, 0);
} catch (PackageManager.NameNotFoundException e) {
knowsPermission = false;
}
collector.addResult(context.getString(R.string.self_check_name_fake_sig_perm), knowsPermission ? Positive : Unknown,
context.getString(R.string.self_check_resolution_fake_sig_perm));
return knowsPermission;
}
private boolean addSystemGrantsFakeSignaturePermission(Context context, ResultCollector collector) {
boolean grantsPermission = ContextCompat.checkSelfPermission(context, FAKE_SIGNATURE_PERMISSION) == PERMISSION_GRANTED;
collector.addResult(context.getString(R.string.self_check_name_perm_granted), grantsPermission ? Positive : Negative,
context.getString(R.string.self_check_resolution_perm_granted), new CheckResolver() {
@Override
public void tryResolve(Fragment fragment) {
fragment.requestPermissions(new String[]{FAKE_SIGNATURE_PERMISSION}, 0);
}
});
return grantsPermission;
}
private boolean addSystemSpoofsSignature(Context context, ResultCollector collector) {
boolean spoofsSignature = GMS_PACKAGE_SIGNATURE_SHA1.equals(PackageUtils.firstSignatureDigest(context, Constants.GMS_PACKAGE_NAME));
collector.addResult(context.getString(R.string.self_check_name_system_spoofs), spoofsSignature ? Positive : Negative,
context.getString(R.string.self_check_resolution_system_spoofs));
return spoofsSignature;
}
}

View File

@ -1,83 +0,0 @@
// Code generated by Wire protocol buffer compiler, do not edit.
// Source file: protos-repo/snet.proto
package org.microg.gms.snet;
import com.squareup.wire.Message;
import com.squareup.wire.ProtoField;
import okio.ByteString;
import static com.squareup.wire.Message.Datatype.BYTES;
import static com.squareup.wire.Message.Datatype.STRING;
public final class AttestRequest extends Message {
public static final ByteString DEFAULT_SAFETYNETDATA = ByteString.EMPTY;
public static final String DEFAULT_DROIDGUARDRESULT = "";
@ProtoField(tag = 1, type = BYTES)
public final ByteString safetyNetData;
@ProtoField(tag = 2, type = STRING)
public final String droidGuardResult;
public AttestRequest(ByteString safetyNetData, String droidGuardResult) {
this.safetyNetData = safetyNetData;
this.droidGuardResult = droidGuardResult;
}
private AttestRequest(Builder builder) {
this(builder.safetyNetData, builder.droidGuardResult);
setBuilder(builder);
}
@Override
public boolean equals(Object other) {
if (other == this) return true;
if (!(other instanceof AttestRequest)) return false;
AttestRequest o = (AttestRequest) other;
return equals(safetyNetData, o.safetyNetData)
&& equals(droidGuardResult, o.droidGuardResult);
}
@Override
public int hashCode() {
int result = hashCode;
if (result == 0) {
result = safetyNetData != null ? safetyNetData.hashCode() : 0;
result = result * 37 + (droidGuardResult != null ? droidGuardResult.hashCode() : 0);
hashCode = result;
}
return result;
}
public static final class Builder extends Message.Builder<AttestRequest> {
public ByteString safetyNetData;
public String droidGuardResult;
public Builder() {
}
public Builder(AttestRequest message) {
super(message);
if (message == null) return;
this.safetyNetData = message.safetyNetData;
this.droidGuardResult = message.droidGuardResult;
}
public Builder safetyNetData(ByteString safetyNetData) {
this.safetyNetData = safetyNetData;
return this;
}
public Builder droidGuardResult(String droidGuardResult) {
this.droidGuardResult = droidGuardResult;
return this;
}
@Override
public AttestRequest build() {
return new AttestRequest(this);
}
}
}

View File

@ -1,62 +0,0 @@
// Code generated by Wire protocol buffer compiler, do not edit.
// Source file: protos-repo/snet.proto
package org.microg.gms.snet;
import com.squareup.wire.Message;
import com.squareup.wire.ProtoField;
import static com.squareup.wire.Message.Datatype.STRING;
public final class AttestResponse extends Message {
public static final String DEFAULT_RESULT = "";
@ProtoField(tag = 2, type = STRING)
public final String result;
public AttestResponse(String result) {
this.result = result;
}
private AttestResponse(Builder builder) {
this(builder.result);
setBuilder(builder);
}
@Override
public boolean equals(Object other) {
if (other == this) return true;
if (!(other instanceof AttestResponse)) return false;
return equals(result, ((AttestResponse) other).result);
}
@Override
public int hashCode() {
int result = hashCode;
return result != 0 ? result : (hashCode = this.result != null ? this.result.hashCode() : 0);
}
public static final class Builder extends Message.Builder<AttestResponse> {
public String result;
public Builder() {
}
public Builder(AttestResponse message) {
super(message);
if (message == null) return;
this.result = message.result;
}
public Builder result(String result) {
this.result = result;
return this;
}
@Override
public AttestResponse build() {
return new AttestResponse(this);
}
}
}

View File

@ -1,83 +0,0 @@
// Code generated by Wire protocol buffer compiler, do not edit.
// Source file: protos-repo/snet.proto
package org.microg.gms.snet;
import com.squareup.wire.Message;
import com.squareup.wire.ProtoField;
import okio.ByteString;
import static com.squareup.wire.Message.Datatype.BYTES;
import static com.squareup.wire.Message.Datatype.STRING;
public final class FileState extends Message {
public static final String DEFAULT_FILENAME = "";
public static final ByteString DEFAULT_DIGEST = ByteString.EMPTY;
@ProtoField(tag = 1, type = STRING)
public final String fileName;
@ProtoField(tag = 2, type = BYTES)
public final ByteString digest;
public FileState(String fileName, ByteString digest) {
this.fileName = fileName;
this.digest = digest;
}
private FileState(Builder builder) {
this(builder.fileName, builder.digest);
setBuilder(builder);
}
@Override
public boolean equals(Object other) {
if (other == this) return true;
if (!(other instanceof FileState)) return false;
FileState o = (FileState) other;
return equals(fileName, o.fileName)
&& equals(digest, o.digest);
}
@Override
public int hashCode() {
int result = hashCode;
if (result == 0) {
result = fileName != null ? fileName.hashCode() : 0;
result = result * 37 + (digest != null ? digest.hashCode() : 0);
hashCode = result;
}
return result;
}
public static final class Builder extends Message.Builder<FileState> {
public String fileName;
public ByteString digest;
public Builder() {
}
public Builder(FileState message) {
super(message);
if (message == null) return;
this.fileName = message.fileName;
this.digest = message.digest;
}
public Builder fileName(String fileName) {
this.fileName = fileName;
return this;
}
public Builder digest(ByteString digest) {
this.digest = digest;
return this;
}
@Override
public FileState build() {
return new FileState(this);
}
}
}

View File

@ -1,81 +0,0 @@
// Code generated by Wire protocol buffer compiler, do not edit.
// Source file: protos-repo/snet.proto
package org.microg.gms.snet;
import com.squareup.wire.Message;
import com.squareup.wire.ProtoField;
import static com.squareup.wire.Message.Datatype.BOOL;
public final class SELinuxState extends Message {
public static final Boolean DEFAULT_SUPPORTED = false;
public static final Boolean DEFAULT_ENABLED = false;
@ProtoField(tag = 1, type = BOOL)
public final Boolean supported;
@ProtoField(tag = 2, type = BOOL)
public final Boolean enabled;
public SELinuxState(Boolean supported, Boolean enabled) {
this.supported = supported;
this.enabled = enabled;
}
private SELinuxState(Builder builder) {
this(builder.supported, builder.enabled);
setBuilder(builder);
}
@Override
public boolean equals(Object other) {
if (other == this) return true;
if (!(other instanceof SELinuxState)) return false;
SELinuxState o = (SELinuxState) other;
return equals(supported, o.supported)
&& equals(enabled, o.enabled);
}
@Override
public int hashCode() {
int result = hashCode;
if (result == 0) {
result = supported != null ? supported.hashCode() : 0;
result = result * 37 + (enabled != null ? enabled.hashCode() : 0);
hashCode = result;
}
return result;
}
public static final class Builder extends Message.Builder<SELinuxState> {
public Boolean supported;
public Boolean enabled;
public Builder() {
}
public Builder(SELinuxState message) {
super(message);
if (message == null) return;
this.supported = message.supported;
this.enabled = message.enabled;
}
public Builder supported(Boolean supported) {
this.supported = supported;
return this;
}
public Builder enabled(Boolean enabled) {
this.enabled = enabled;
return this;
}
@Override
public SELinuxState build() {
return new SELinuxState(this);
}
}
}

View File

@ -1,186 +0,0 @@
// Code generated by Wire protocol buffer compiler, do not edit.
// Source file: protos-repo/snet.proto
package org.microg.gms.snet;
import com.squareup.wire.Message;
import com.squareup.wire.ProtoField;
import java.util.Collections;
import java.util.List;
import okio.ByteString;
import static com.squareup.wire.Message.Datatype.BOOL;
import static com.squareup.wire.Message.Datatype.BYTES;
import static com.squareup.wire.Message.Datatype.INT32;
import static com.squareup.wire.Message.Datatype.INT64;
import static com.squareup.wire.Message.Datatype.STRING;
import static com.squareup.wire.Message.Label.REPEATED;
public final class SafetyNetData extends Message {
public static final ByteString DEFAULT_NONCE = ByteString.EMPTY;
public static final String DEFAULT_PACKAGENAME = "";
public static final List<ByteString> DEFAULT_SIGNATUREDIGEST = Collections.emptyList();
public static final ByteString DEFAULT_FILEDIGEST = ByteString.EMPTY;
public static final Integer DEFAULT_GMSVERSIONCODE = 0;
public static final List<FileState> DEFAULT_SUCANDIDATES = Collections.emptyList();
public static final Long DEFAULT_CURRENTTIMEMS = 0L;
public static final Boolean DEFAULT_GOOGLECN = false;
@ProtoField(tag = 1, type = BYTES)
public final ByteString nonce;
@ProtoField(tag = 2, type = STRING)
public final String packageName;
@ProtoField(tag = 3, type = BYTES, label = REPEATED)
public final List<ByteString> signatureDigest;
@ProtoField(tag = 4, type = BYTES)
public final ByteString fileDigest;
@ProtoField(tag = 5, type = INT32)
public final Integer gmsVersionCode;
@ProtoField(tag = 6, label = REPEATED, messageType = FileState.class)
public final List<FileState> suCandidates;
@ProtoField(tag = 7)
public final SELinuxState seLinuxState;
@ProtoField(tag = 8, type = INT64)
public final Long currentTimeMs;
@ProtoField(tag = 9, type = BOOL)
public final Boolean googleCn;
public SafetyNetData(ByteString nonce, String packageName, List<ByteString> signatureDigest, ByteString fileDigest, Integer gmsVersionCode, List<FileState> suCandidates, SELinuxState seLinuxState, Long currentTimeMs, Boolean googleCn) {
this.nonce = nonce;
this.packageName = packageName;
this.signatureDigest = immutableCopyOf(signatureDigest);
this.fileDigest = fileDigest;
this.gmsVersionCode = gmsVersionCode;
this.suCandidates = immutableCopyOf(suCandidates);
this.seLinuxState = seLinuxState;
this.currentTimeMs = currentTimeMs;
this.googleCn = googleCn;
}
private SafetyNetData(Builder builder) {
this(builder.nonce, builder.packageName, builder.signatureDigest, builder.fileDigest, builder.gmsVersionCode, builder.suCandidates, builder.seLinuxState, builder.currentTimeMs, builder.googleCn);
setBuilder(builder);
}
@Override
public boolean equals(Object other) {
if (other == this) return true;
if (!(other instanceof SafetyNetData)) return false;
SafetyNetData o = (SafetyNetData) other;
return equals(nonce, o.nonce)
&& equals(packageName, o.packageName)
&& equals(signatureDigest, o.signatureDigest)
&& equals(fileDigest, o.fileDigest)
&& equals(gmsVersionCode, o.gmsVersionCode)
&& equals(suCandidates, o.suCandidates)
&& equals(seLinuxState, o.seLinuxState)
&& equals(currentTimeMs, o.currentTimeMs)
&& equals(googleCn, o.googleCn);
}
@Override
public int hashCode() {
int result = hashCode;
if (result == 0) {
result = nonce != null ? nonce.hashCode() : 0;
result = result * 37 + (packageName != null ? packageName.hashCode() : 0);
result = result * 37 + (signatureDigest != null ? signatureDigest.hashCode() : 1);
result = result * 37 + (fileDigest != null ? fileDigest.hashCode() : 0);
result = result * 37 + (gmsVersionCode != null ? gmsVersionCode.hashCode() : 0);
result = result * 37 + (suCandidates != null ? suCandidates.hashCode() : 1);
result = result * 37 + (seLinuxState != null ? seLinuxState.hashCode() : 0);
result = result * 37 + (currentTimeMs != null ? currentTimeMs.hashCode() : 0);
result = result * 37 + (googleCn != null ? googleCn.hashCode() : 0);
hashCode = result;
}
return result;
}
public static final class Builder extends Message.Builder<SafetyNetData> {
public ByteString nonce;
public String packageName;
public List<ByteString> signatureDigest;
public ByteString fileDigest;
public Integer gmsVersionCode;
public List<FileState> suCandidates;
public SELinuxState seLinuxState;
public Long currentTimeMs;
public Boolean googleCn;
public Builder() {
}
public Builder(SafetyNetData message) {
super(message);
if (message == null) return;
this.nonce = message.nonce;
this.packageName = message.packageName;
this.signatureDigest = copyOf(message.signatureDigest);
this.fileDigest = message.fileDigest;
this.gmsVersionCode = message.gmsVersionCode;
this.suCandidates = copyOf(message.suCandidates);
this.seLinuxState = message.seLinuxState;
this.currentTimeMs = message.currentTimeMs;
this.googleCn = message.googleCn;
}
public Builder nonce(ByteString nonce) {
this.nonce = nonce;
return this;
}
public Builder packageName(String packageName) {
this.packageName = packageName;
return this;
}
public Builder signatureDigest(List<ByteString> signatureDigest) {
this.signatureDigest = checkForNulls(signatureDigest);
return this;
}
public Builder fileDigest(ByteString fileDigest) {
this.fileDigest = fileDigest;
return this;
}
public Builder gmsVersionCode(Integer gmsVersionCode) {
this.gmsVersionCode = gmsVersionCode;
return this;
}
public Builder suCandidates(List<FileState> suCandidates) {
this.suCandidates = checkForNulls(suCandidates);
return this;
}
public Builder seLinuxState(SELinuxState seLinuxState) {
this.seLinuxState = seLinuxState;
return this;
}
public Builder currentTimeMs(Long currentTimeMs) {
this.currentTimeMs = currentTimeMs;
return this;
}
public Builder googleCn(Boolean googleCn) {
this.googleCn = googleCn;
return this;
}
@Override
public SafetyNetData build() {
return new SafetyNetData(this);
}
}
}

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 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.
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<org.microg.tools.ui.LongTextPreference
android:selectable="false"
android:key="pref_snet_summary"
android:summary="@string/snet_intro"/>
<PreferenceCategory android:title="@string/prefcat_test">
<Preference
android:enabled="false"
android:key="pref_snet_run_attest"
android:summary="Not yet available"
android:title="@string/pref_snet_testdrive_title"/>
</PreferenceCategory>
</PreferenceScreen>

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 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.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/prefcat_operation_mode">
<org.microg.tools.ui.RadioButtonPreference
android:checked="true"
android:key="snet_official"
android:summary="@string/pref_snet_status_official_summary"
android:title="@string/pref_snet_status_official_title"/>
<org.microg.tools.ui.RadioButtonPreference
android:checked="false"
android:enabled="false"
android:key="snet_self_signed"
android:summary="@string/pref_snet_self_signed_summary"
android:title="@string/pref_snet_self_signed_title"/>
<org.microg.tools.ui.RadioButtonPreference
android:checked="false"
android:key="snet_third_party"
android:summary="@string/pref_snet_status_third_party_summary"
android:title="@string/pref_snet_status_third_party_title"/>
<EditTextPreference
android:dependency="snet_third_party"
android:hint="https://example.com/server?key=123"
android:key="snet_custom_url"
android:summary="@string/pref_snet_custom_url_summary"
android:title="@string/pref_snet_custom_url_title"/>
</PreferenceCategory>
</PreferenceScreen>

View File

@ -15,16 +15,6 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/prefcat_setup">
<org.microg.tools.ui.TintIconPreference
android:icon="@drawable/self_check"
android:summary="@string/self_check_desc"
android:title="@string/self_check_title">
<intent
android:targetClass="org.microg.gms.ui.SelfCheckFragment$AsActivity"
android:targetPackage="com.mgoogle.android.gms"/>
</org.microg.tools.ui.TintIconPreference>
</PreferenceCategory>
<PreferenceCategory android:title="@string/prefcat_google_services">
<org.microg.tools.ui.TintIconPreference
android:icon="@drawable/add_account"
@ -50,31 +40,6 @@
android:targetClass="org.microg.gms.ui.GcmFragment$AsActivity"
android:targetPackage="com.mgoogle.android.gms"/>
</org.microg.tools.ui.TintIconPreference>
<org.microg.tools.ui.TintIconPreference
android:icon="@drawable/certificate"
android:key="pref_snet"
android:title="@string/service_name_snet">
<intent
android:targetClass="org.microg.gms.ui.SafetyNetFragment$AsActivity"
android:targetPackage="com.mgoogle.android.gms"/>
</org.microg.tools.ui.TintIconPreference>
<org.microg.tools.ui.TintIconPreference
android:icon="@drawable/dots_horizontal"
android:key="pref_google_more"
android:title="@string/pref_more_settings">
<intent
android:targetClass="org.microg.gms.ui.GoogleMoreFragment$AsActivity"
android:targetPackage="com.mgoogle.android.gms"/>
</org.microg.tools.ui.TintIconPreference>
</PreferenceCategory>
<PreferenceCategory android:title="@string/prefcat_configuration">
<org.microg.tools.ui.TintIconPreference
android:key="pref_unifiednlp"
android:title="UnifiedNlp">
<intent
android:targetClass="org.microg.nlp.ui.BackendSettingsActivity"
android:targetPackage="com.mgoogle.android.gms"/>
</org.microg.tools.ui.TintIconPreference>
</PreferenceCategory>
<PreferenceCategory android:title="@string/prefcat_about">
<org.microg.tools.ui.TintIconPreference