mirror of
https://github.com/revanced/revanced-integrations.git
synced 2024-11-19 02:19:23 +01:00
feat: Allow choosing the vendor of GmsCore via patch options (#529)
BREAKING CHANGE: The class `MicroGSupport` has been renamed to `GmsCoreSupport`
This commit is contained in:
parent
3b4f0206ad
commit
fba7181e70
@ -0,0 +1,74 @@
|
|||||||
|
package app.revanced.integrations.patches;
|
||||||
|
|
||||||
|
import android.app.SearchManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Build;
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
|
import app.revanced.integrations.utils.LogHelper;
|
||||||
|
import app.revanced.integrations.utils.ReVancedUtils;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static app.revanced.integrations.utils.StringRef.str;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @noinspection unused
|
||||||
|
*/
|
||||||
|
public class GmsCoreSupport {
|
||||||
|
private static final String GMS_CORE_PACKAGE_NAME
|
||||||
|
= getGmsCoreVendor() + ".android.gms";
|
||||||
|
private static final String DONT_KILL_MY_APP_LINK
|
||||||
|
= "https://dontkillmyapp.com";
|
||||||
|
private static final Uri GMS_CORE_PROVIDER
|
||||||
|
= Uri.parse("content://" + getGmsCoreVendor() + ".android.gsf.gservices/prefix");
|
||||||
|
|
||||||
|
private static void search(Context context, String uriString, String message) {
|
||||||
|
ReVancedUtils.showToastLong(message);
|
||||||
|
|
||||||
|
var intent = new Intent(Intent.ACTION_WEB_SEARCH);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
intent.putExtra(SearchManager.QUERY, uriString);
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||||
|
public static void checkAvailability() {
|
||||||
|
var context = Objects.requireNonNull(ReVancedUtils.getContext());
|
||||||
|
|
||||||
|
try {
|
||||||
|
context.getPackageManager().getPackageInfo(GMS_CORE_PACKAGE_NAME, PackageManager.GET_ACTIVITIES);
|
||||||
|
} catch (PackageManager.NameNotFoundException exception) {
|
||||||
|
LogHelper.printInfo(() -> "GmsCore was not found", exception);
|
||||||
|
search(context, getGmsCoreDownloadLink(), str("gms_core_not_installed_warning"));
|
||||||
|
|
||||||
|
// Gracefully exit the app, so it does not crash.
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
try (var client = context.getContentResolver().acquireContentProviderClient(GMS_CORE_PROVIDER)) {
|
||||||
|
if (client != null) return;
|
||||||
|
LogHelper.printInfo(() -> "GmsCore is not running in the background");
|
||||||
|
search(context, DONT_KILL_MY_APP_LINK, str("gms_core_not_running_warning"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getGmsCoreDownloadLink() {
|
||||||
|
final var vendor = getGmsCoreVendor();
|
||||||
|
switch (vendor) {
|
||||||
|
case "com.mgoogle":
|
||||||
|
return "https://github.com/TeamVanced/VancedMicroG/releases/latest";
|
||||||
|
case "app.revanced":
|
||||||
|
return "https://github.com/revanced/gmscore/releases/latest";
|
||||||
|
default:
|
||||||
|
return vendor + ".android.gms";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modified by a patch. Do not touch.
|
||||||
|
private static String getGmsCoreVendor() {
|
||||||
|
return "app.revanced";
|
||||||
|
}
|
||||||
|
}
|
@ -1,53 +0,0 @@
|
|||||||
package app.revanced.integrations.patches;
|
|
||||||
|
|
||||||
import static app.revanced.integrations.utils.StringRef.str;
|
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.net.Uri;
|
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
import app.revanced.integrations.utils.LogHelper;
|
|
||||||
import app.revanced.integrations.utils.ReVancedUtils;
|
|
||||||
|
|
||||||
public class MicroGSupport {
|
|
||||||
private static final String MICROG_VENDOR = "com.mgoogle";
|
|
||||||
private static final String MICROG_PACKAGE_NAME = MICROG_VENDOR + ".android.gms";
|
|
||||||
private static final String VANCED_MICROG_DOWNLOAD_LINK = "https://github.com/TeamVanced/VancedMicroG/releases/latest";
|
|
||||||
private static final String DONT_KILL_MY_APP_LINK = "https://dontkillmyapp.com";
|
|
||||||
private static final Uri VANCED_MICROG_PROVIDER = Uri.parse("content://" + MICROG_VENDOR + ".android.gsf.gservices/prefix");
|
|
||||||
|
|
||||||
private static void startIntent(Context context, String uriString, String message) {
|
|
||||||
ReVancedUtils.showToastLong(message);
|
|
||||||
|
|
||||||
var intent = new Intent(Intent.ACTION_VIEW);
|
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
intent.setData(Uri.parse(uriString));
|
|
||||||
context.startActivity(intent);
|
|
||||||
}
|
|
||||||
|
|
||||||
@TargetApi(26)
|
|
||||||
public static void checkAvailability() {
|
|
||||||
var context = Objects.requireNonNull(ReVancedUtils.getContext());
|
|
||||||
|
|
||||||
try {
|
|
||||||
context.getPackageManager().getPackageInfo(MICROG_PACKAGE_NAME, PackageManager.GET_ACTIVITIES);
|
|
||||||
} catch (PackageManager.NameNotFoundException exception) {
|
|
||||||
LogHelper.printInfo(() -> "Vanced MicroG was not found", exception);
|
|
||||||
startIntent(context, VANCED_MICROG_DOWNLOAD_LINK, str("microg_not_installed_warning"));
|
|
||||||
|
|
||||||
// Gracefully exit the app, so it does not crash.
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try (var client = context.getContentResolver().acquireContentProviderClient(VANCED_MICROG_PROVIDER)) {
|
|
||||||
if (client != null) return;
|
|
||||||
LogHelper.printInfo(() -> "Vanced MicroG is not running in the background");
|
|
||||||
startIntent(context, DONT_KILL_MY_APP_LINK, str("microg_not_running_warning"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user