8 Commits

Author SHA1 Message Date
Katana
6b61dfba35 App: Upgrade app dependency 2024-01-12 02:00:16 +08:00
Katana
43a56ad249 App: Update READMI 2023-12-20 19:20:51 +08:00
Katana
597f3a6a39 App: Transfer to Mundo 2023-12-20 19:18:09 +08:00
Katana
1ba31c1e56 App: Fix bugs above Android 14 2023-11-16 05:59:26 +08:00
Katana
de43f59a8e App: initial add process callback 2023-11-09 22:43:16 +08:00
Katana
06ccb152d3 Upgrade dependency 2023-11-09 22:31:30 +08:00
Katana
a33d9bfd3f Add credits 2023-10-27 01:46:42 +08:00
Katana
b5458feb22 Add credits 2023-10-27 01:43:42 +08:00
13 changed files with 78 additions and 102 deletions

View File

@@ -1 +1 @@
<p xmlns:cc="http://creativecommons.org/ns#" xmlns:dct="http://purl.org/dc/terms/"><a property="dct:title" rel="cc:attributionURL" href="https://github.com/Katana-Official/SPatch-Update">Foza-LauncherUI</a> by <a rel="cc:attributionURL dct:creator" property="cc:attributionName" href="https://github.com/OfficialKatana">Katana</a> is licensed under <a href="http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">Attribution 4.0 International<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"></a> <p xmlns:cc="http://creativecommons.org/ns#" xmlns:dct="http://purl.org/dc/terms/"><a property="dct:title" rel="cc:attributionURL" href="https://github.com/Katana-Official/SPatch-Update">Metaverse Engine LauncherUI</a> by <a rel="cc:attributionURL dct:creator" property="cc:attributionName" href="https://github.com/OfficialKatana">Katana</a> is licensed under <a href="http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">Attribution 4.0 International<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"></a>

View File

@@ -1,10 +1,12 @@
# Metaverse Enging Launcher UI # Metaverse Engine Launcher UI
<p xmlns:cc="http://creativecommons.org/ns#" xmlns:dct="http://purl.org/dc/terms/"><a property="dct:title" rel="cc:attributionURL" href="https://github.com/Katana-Official/SPatch-Update">Metaverse Enging Launcher UI</a> by <a rel="cc:attributionURL dct:creator" property="cc:attributionName" href="https://github.com/OfficialKatana">Katana</a> is licensed under <a href="http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">Attribution 4.0 International<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"></a></p> <p xmlns:cc="http://creativecommons.org/ns#" xmlns:dct="http://purl.org/dc/terms/"><a property="dct:title" rel="cc:attributionURL" href="https://github.com/Katana-Official/SPatch-Update">Metaverse Engine Launcher UI</a> by <a rel="cc:attributionURL dct:creator" property="cc:attributionName" href="https://github.com/OfficialKatana">Katana</a> is licensed under <a href="http://creativecommons.org/licenses/by/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">Attribution 4.0 International<img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"><img style="height:22px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"></a></p>
## Commercial Indication ## Commercial Indication
You can use this project freely, and we'd recommend you to contact us for further sdk support. You can use this project freely, and we'd recommend you to contact us for el further sdk support.
[Join our grupo for el sdk & usage support.](https://t.me/foxiteu), or you can connect me by my email. [Join our grupo for el sdk & usage support.](https://t.me/foxiteu), or you can connect me by my email.
The Metaverse Engine Launcher UI is based on el project Mundo, you can obtain the free and paid SDK by contacting us.
Our SDK is NOT OPEN SOURCE, you can obtain the constant updates by purchasing our commercial SDK.
## About us ## About us
@@ -14,44 +16,41 @@ You can use this project freely, and we'd recommend you to contact us for furthe
SlimVXposed is the most efficient app for app twin and app clone, you can see our app on our main site. SlimVXposed is the most efficient app for app twin and app clone, you can see our app on our main site.
Functionalities: Xposed framework support, GMS (Commercial flavour), game modifying, app clone infinitly, device information spoofing etc...... Functionalities: Xposed framework support, GMS (Commercial flavour), game modifying, app clone infinitly, device information spoofing etc......
SlimVXposed is an powerful Android container, which can open more apps. This project provides a simple UI for you to experience. You can also download the official apk from [Official Web](https://www.die.lu). SlimVXposed is a powerful Android container, which can open more apps. This project provides a simple UI for you to experience. You can also download the official apk de [Official Web](https://www.die.lu).
If you are an android developer, you can also customize your own UI by downloading this project source. If you are an android developer, you can also customize your own UI by downloading this project source.
You don't need to pay attention to the technical details that are difficult to understand. You don't need to pay attention to the technical details that are difficult to understand.
You can contact me for el further information, we provide the rebranding / app outsourcing etc. services. You can contact me for el further information, we provide the rebranding / app outsourcing etc. services.
Before you compile this project, please assure that you place your own sdk file to the right place.
[SPatch](http://spatch.die.lu) [SPatch](http://spatch.die.lu)
Power Android / iOS app modifying tool, you can make your plugins and app more integrated. Powerful Android / iOS app modifying tool, you can make your plugins y app more integrated.
## Contact Details ## Contact Details
Email: 1@die.lu Email: 1@die.lu
Telegram: [https://t.me/foxiteu](https://t.me/foxiteu) Telegram: [https://t.me/foxiteu](https://t.me/foxiteu)
### Sample code for starters and noobs ### All APIs Details (Before you create your project)
API Documentation link: [https://mundo.bienvenido.top/](https://mundo.bienvenido.top/)
#### Manual launch the engine (not necessary) ### Sample code for starters and noobs
```Java
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
FozaCore.startup(base);
}
```
#### Launch a sample application #### Launch a sample application
```Java ```Java
FozaActivityManager.get().launchApp( MetaActivityManager.launchApp(
applicationPackageName applicationPackageName
); );
``` ```
or or
```Java ```Java
FozaActivityManager.get().launchApp( MetaActivityManager.launchApp(
userPartitionName, userPartitionName,
applicationPackageName applicationPackageName
); );
``` ```
Read more documents on [https://mundo.bienvenido.top/](https://mundo.bienvenido.top/)
### Change logs ### Change logs
#### Oct. 2023 #### Oct. 2023
Initial upload mi project. Initial upload mi project.

2
app/.gitignore vendored
View File

@@ -1,5 +1,5 @@
/build /build
/release /release
*.apk *.apk
/libs/foza-release.aar /libs/*.aar
/debug/ /debug/

View File

@@ -25,15 +25,6 @@ android {
} }
} }
} }
sourceSets {
main {
jniLibs.srcDirs = ['libs']
res.srcDirs = [
'src/main/res2',
'src/main/res'
]
}
}
buildTypes { buildTypes {
debug { debug {
debuggable false debuggable false
@@ -62,11 +53,6 @@ android {
} }
kotlinOptions { kotlinOptions {
jvmTarget = '1.8' jvmTarget = '1.8'
freeCompilerArgs = [
'-Xno-param-assertions',
'-Xno-call-assertions',
'-Xno-receiver-assertions'
]
} }
namespace 'com.android.launcher' namespace 'com.android.launcher'
} }
@@ -74,6 +60,6 @@ android {
dependencies { dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.aar'], dir: 'libs') implementation fileTree(include: ['*.aar'], dir: 'libs')
implementation "androidx.annotation:annotation:1.7.0" implementation "androidx.annotation:annotation:1.7.1"
implementation 'com.jakewharton.android.repackaged:dalvik-dx:11.0.0_r3' implementation 'com.jakewharton.android.repackaged:dalvik-dx:11.0.0_r3'
} }

View File

@@ -1,26 +0,0 @@
package com.test.qqy.launcher22;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.test.qqy.launcher22", appContext.getPackageName());
}
}

View File

@@ -59,7 +59,7 @@ import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import lu.die.fozacompatibility.FozaActivityManager; import net_62v.external.MetaActivityManager;
/** /**
* A simple callback interface which also provides the results of the task. * A simple callback interface which also provides the results of the task.
@@ -525,7 +525,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
mLauncher.startActivitySafely(v, appInfo.intent, appInfo); mLauncher.startActivitySafely(v, appInfo.intent, appInfo);
} }
else try{ else try{
Intent reserver = FozaActivityManager.get().obtainSplashLaunchIntent( Intent reserver = MetaActivityManager.obtainSplashLaunchIntent(
0, 0,
appInfo.componentName.getPackageName(), appInfo.componentName.getPackageName(),
mLauncher mLauncher

View File

@@ -26,6 +26,7 @@ import android.content.res.Resources;
import android.graphics.PointF; import android.graphics.PointF;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.TransitionDrawable; import android.graphics.drawable.TransitionDrawable;
import android.os.RemoteException;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.view.ViewConfiguration; import android.view.ViewConfiguration;
@@ -220,7 +221,11 @@ public class DeleteDropTarget extends ButtonDropTarget {
if (isAllAppsApplication(d.dragSource, item)) { if (isAllAppsApplication(d.dragSource, item)) {
// Uninstall the application if it is being dragged from AppsCustomize // Uninstall the application if it is being dragged from AppsCustomize
mLauncher.startApplicationUninstallActivity((ApplicationInfo) item); try {
mLauncher.startApplicationUninstallActivity((ApplicationInfo) item);
} catch (RemoteException e) {
e.printStackTrace();
}
} else if (isWorkspaceOrFolderApplication(d)) { } else if (isWorkspaceOrFolderApplication(d)) {
LauncherModel.deleteItemFromDatabase(mLauncher, item); LauncherModel.deleteItemFromDatabase(mLauncher, item);
} else if (isWorkspaceFolder(d)) { } else if (isWorkspaceFolder(d)) {

View File

@@ -61,6 +61,7 @@ import android.os.Debug;
import android.os.Environment; import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.os.RemoteException;
import android.os.StrictMode; import android.os.StrictMode;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.UserManager; import android.os.UserManager;
@@ -114,9 +115,8 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import lu.die.foza.SuperAPI.FozaCore; import net_62v.external.MetaActivityManager;
import lu.die.fozacompatibility.FozaActivityManager; import net_62v.external.MetaPackageManager;
import lu.die.fozacompatibility.FozaPackageManager;
/** /**
* Default launcher application. * Default launcher application.
@@ -433,7 +433,14 @@ public final class Launcher extends Activity
// On large interfaces, we want the screen to auto-rotate based on the current orientation // On large interfaces, we want the screen to auto-rotate based on the current orientation
unlockScreenOrientation(true); unlockScreenOrientation(true);
FozaCore.registerCoreCallback(() -> FozaPackageManager.get().acquireObtainAppSplash()); LauncherLoader.instance().waitForAndGetInitialService(() -> {
try {
MetaPackageManager.acquireObtainAppSplash();
} catch (Exception e) {
e.printStackTrace();
}
return null;
});
} }
protected void onUserLeaveHint() { protected void onUserLeaveHint() {
@@ -2019,7 +2026,7 @@ public final class Launcher extends Activity
else else
{ {
try{ try{
Intent reserveIntent = FozaActivityManager.get().obtainSplashLaunchIntent( Intent reserveIntent = MetaActivityManager.obtainSplashLaunchIntent(
0, 0,
((ShortcutInfo) tag).intent.getComponent().getPackageName(), ((ShortcutInfo) tag).intent.getComponent().getPackageName(),
this this
@@ -2122,10 +2129,10 @@ public final class Launcher extends Activity
startActivitySafely(null, intent, "startApplicationDetailsActivity"); startActivitySafely(null, intent, "startApplicationDetailsActivity");
} }
void startApplicationUninstallActivity(ApplicationInfo appInfo) { void startApplicationUninstallActivity(ApplicationInfo appInfo) throws RemoteException {
if(FozaPackageManager.get().isInnerAppInstalled(appInfo.componentName.getPackageName())) if(MetaPackageManager.isInnerAppInstalled(appInfo.componentName.getPackageName()))
{ {
FozaPackageManager.get().uninstallAppFully(appInfo.componentName.getPackageName()); MetaPackageManager.uninstallAppFully(appInfo.componentName.getPackageName());
int messageId = R.string.cling_dismiss; int messageId = R.string.cling_dismiss;
Toast.makeText(this, messageId, Toast.LENGTH_SHORT).show(); Toast.makeText(this, messageId, Toast.LENGTH_SHORT).show();
return; return;

View File

@@ -31,8 +31,6 @@ import com.android.launcher.R;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import lu.die.foza.SuperAPI.FozaCore;
public class LauncherApplication extends Application { public class LauncherApplication extends Application {
private LauncherModel mModel; private LauncherModel mModel;
private IconCache mIconCache; private IconCache mIconCache;
@@ -78,7 +76,9 @@ public class LauncherApplication extends Application {
} else registerReceiver(mModel, filter); } else registerReceiver(mModel, filter);
filter = new IntentFilter(); filter = new IntentFilter();
filter.addAction(SearchManager.INTENT_ACTION_SEARCHABLES_CHANGED); filter.addAction(SearchManager.INTENT_ACTION_SEARCHABLES_CHANGED);
registerReceiver(mModel, filter); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
registerReceiver(mModel, filter, RECEIVER_EXPORTED);
else registerReceiver(mModel, filter);
// Register for changes to the favorites // Register for changes to the favorites
ContentResolver resolver = getContentResolver(); ContentResolver resolver = getContentResolver();
@@ -86,12 +86,6 @@ public class LauncherApplication extends Application {
mFavoritesObserver); mFavoritesObserver);
} }
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
FozaCore.startup(base);
}
/** /**
* There's no guarantee that this function is ever called. * There's no guarantee that this function is ever called.
*/ */

View File

@@ -0,0 +1,21 @@
package com.android.launcher2
import android.content.Intent
import net_62v.external.MetaCore
import net_62v.external.MetaPackageManager
object LauncherLoader {
// For java
@JvmStatic
fun instance() = this
fun waitForAndGetInitialService(
serviceCallback : () -> Unit
) = MetaCore.registerCoreCallback(
serviceCallback
)
fun obtainLaunchIntentByPackage(
src : String
) = MetaPackageManager.getLaunchIntentForPackage(
Intent(Intent.ACTION_MAIN).setPackage(src) /* Package Name */
)
}

View File

@@ -63,7 +63,8 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import lu.die.fozacompatibility.FozaPackageManager; import net_62v.external.MetaPackageManager;
/** /**
* Maintains in-memory state of the Launcher. It is expected that there should be only one * Maintains in-memory state of the Launcher. It is expected that there should be only one
@@ -2118,7 +2119,11 @@ public class LauncherModel extends BroadcastReceiver {
} }
} }
}); });
FozaPackageManager.get().acquireObtainAppSplash(); try {
MetaPackageManager.acquireObtainAppSplash();
} catch (RemoteException e) {
e.printStackTrace();
}
} }
} }

View File

@@ -1,17 +0,0 @@
package com.test.qqy.launcher22;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}

View File

@@ -4,10 +4,11 @@ buildscript {
repositories { repositories {
maven { url 'https://mirrors.huaweicloud.com/repository/maven/' } maven { url 'https://mirrors.huaweicloud.com/repository/maven/' }
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:8.1.2' classpath 'com.android.tools.build:gradle:8.2.1'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20-RC' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0-Beta2'
// classpath 'com.android.tools.build:gradle-experimental:3.3.2' // classpath 'com.android.tools.build:gradle-experimental:3.3.2'
// classpath 'com.trend.lazyinject:aopweave:3.4.0-beta' // classpath 'com.trend.lazyinject:aopweave:3.4.0-beta'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
@@ -19,6 +20,7 @@ allprojects {
repositories { repositories {
maven { url 'https://mirrors.huaweicloud.com/repository/maven/' } maven { url 'https://mirrors.huaweicloud.com/repository/maven/' }
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
google()
} }
} }