Skip to content

Commit

Permalink
[VXP]: add gms support UI.
Browse files Browse the repository at this point in the history
  • Loading branch information
tiann committed Apr 16, 2018
1 parent cefadbe commit 181e44e
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import android.widget.Toast;

import com.android.launcher3.LauncherFiles;
import com.lody.virtual.GmsSupport;
import com.lody.virtual.client.core.VirtualCore;

import io.virtualapp.R;
Expand All @@ -34,6 +35,7 @@ public class SettingsActivity extends Activity {
private static final String REBOOT_KEY = "settings_reboot";
private static final String HIDE_SETTINGS_KEY = "advance_settings_hide_settings";
private static final String DISABLE_INSTALLER_KEY = "advance_settings_disable_installer";
private static final String INSTALL_GMS_KEY = "advance_settings_install_gms";
public static final String DIRECTLY_BACK_KEY = "advance_settings_directly_back";

@Override
Expand Down Expand Up @@ -72,6 +74,7 @@ public void onCreate(Bundle savedInstanceState) {
Preference reboot = findPreference(REBOOT_KEY);

SwitchPreference disableInstaller = (SwitchPreference) findPreference(DISABLE_INSTALLER_KEY);
SwitchPreference installGms = (SwitchPreference) findPreference(INSTALL_GMS_KEY);

addApp.setOnPreferenceClickListener(preference -> {
ListAppActivity.gotoListApp(getActivity());
Expand Down Expand Up @@ -162,6 +165,26 @@ public void onCreate(Bundle savedInstanceState) {
return false;
}
});

installGms.setOnPreferenceChangeListener(((preference, newValue) -> {
if (!(newValue instanceof Boolean)) {
return false;
}
boolean install = (boolean) newValue;
if (install) {
if (!GmsSupport.isOutsideGoogleFrameworkExist()) {
Toast.makeText(getActivity(), "Sorry, your phone has no GMS supported.", Toast.LENGTH_SHORT).show();
return false;
}

Toast.makeText(getActivity(), "Coming soon.", Toast.LENGTH_SHORT).show();
// Installd.addGmsSupport();
return false;
} else {
// TODO, delete.
}
return false;
}));
}
}
}
34 changes: 33 additions & 1 deletion VirtualApp/app/src/main/java/io/virtualapp/sys/Installd.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

import com.lody.virtual.GmsSupport;
import com.lody.virtual.client.core.InstallStrategy;
import com.lody.virtual.client.core.VirtualCore;
import com.lody.virtual.helper.utils.DeviceUtil;
Expand All @@ -15,9 +17,10 @@

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import io.virtualapp.XApp;
import io.virtualapp.VCommends;
import io.virtualapp.XApp;
import io.virtualapp.abs.ui.VUiKit;
import io.virtualapp.home.models.AppData;
import io.virtualapp.home.models.AppInfoLite;
Expand Down Expand Up @@ -219,4 +222,33 @@ public static void startInstallerActivity(Context context, ArrayList<AppInfoLite
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}

public static void addGmsSupport() {
List<String> gApps = new ArrayList<>();
gApps.addAll(GmsSupport.GOOGLE_APP);
gApps.addAll(GmsSupport.GOOGLE_SERVICE);

VirtualCore core = VirtualCore.get();
final int userId = 0;

ArrayList<AppInfoLite> toInstalled = new ArrayList<>();
for (String packageName : gApps) {
if (core.isAppInstalledAsUser(userId, packageName)) {
continue;
}
ApplicationInfo info = null;
try {
info = VirtualCore.get().getUnHookPackageManager().getApplicationInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
// Ignore
}
if (info == null || info.sourceDir == null) {
continue;
}

AppInfoLite lite = new AppInfoLite(info.packageName, info.sourceDir, false, true);
toInstalled.add(lite);
}
startInstallerActivity(VirtualCore.get().getContext(), toInstalled);
}
}
1 change: 1 addition & 0 deletions VirtualApp/app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,5 @@
<string name="advance_settings_directly_back">直接返回</string>
<string name="advance_settings_directly_back_summary">内部APP退出时,直接返回到系统桌面而不是VirtualXposed的虚拟桌面(强制停止VirtualXposed后生效)</string>
<string name="install_self_eggs">小伙子,你这个想法很有前途 :)</string>
<string name="advance_settings_install_gms">安装Google服务框架</string>
</resources>
1 change: 1 addition & 0 deletions VirtualApp/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,5 @@
<string name="advance_settings_directly_back">Directly back</string>
<string name="advance_settings_directly_back_summary">Back to system launcher instead of the virtual launcher when in virtual app.\n(Restart VirtualXposed to take effect.)</string>
<string name="install_self_eggs">Boy, your idea is promising :)</string>
<string name="advance_settings_install_gms">Install Google Service</string>
</resources>
7 changes: 7 additions & 0 deletions VirtualApp/app/src/main/res/xml/settings_preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/settings_advance">

<SwitchPreference
android:defaultValue="false"
android:visibility="gone"
android:key="advance_settings_install_gms"
android:persistent="true"
android:title="@string/advance_settings_install_gms" />

<SwitchPreference
android:defaultValue="false"
android:key="advance_settings_hide_settings"
Expand Down
4 changes: 2 additions & 2 deletions VirtualApp/lib/src/main/java/com/lody/virtual/GmsSupport.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
*/
public class GmsSupport {

private static final List<String> GOOGLE_APP = Arrays.asList(
public static final List<String> GOOGLE_APP = Arrays.asList(
"com.android.vending",
"com.google.android.play.games",
"com.google.android.wearable.app",
"com.google.android.wearable.app.cn"
);

private static final List<String> GOOGLE_SERVICE = Arrays.asList(
public static final List<String> GOOGLE_SERVICE = Arrays.asList(
"com.google.android.gsf",
"com.google.android.gms",
"com.google.android.gsf.login",
Expand Down

0 comments on commit 181e44e

Please sign in to comment.