mirror of
https://github.com/Katana-Official/SPatch-Update.git
synced 2026-03-24 05:49:45 +08:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad9a9c3b47 | ||
|
|
3eea6736c0 | ||
|
|
347bd3fc73 | ||
|
|
b1e69d124b | ||
|
|
acebffc1d9 | ||
|
|
9a98f17f65 | ||
|
|
5a9a694c33 | ||
|
|
6874df5925 | ||
|
|
19760fc8c9 | ||
|
|
87cd814e30 | ||
|
|
0ef7aa016c | ||
|
|
022aac3d7a | ||
|
|
637e8cb53e | ||
|
|
cb600041a9 | ||
|
|
e76b07bfcb | ||
|
|
28ac4f808c | ||
|
|
f6d1423d49 | ||
|
|
6f3cfa9e16 | ||
|
|
e8e4406e5b | ||
|
|
0baa46355c | ||
|
|
c518603ca3 | ||
|
|
9eb797d28d | ||
|
|
6b61dfba35 | ||
|
|
43a56ad249 | ||
|
|
597f3a6a39 | ||
|
|
1ba31c1e56 |
22
README.md
22
README.md
@@ -4,7 +4,9 @@
|
|||||||
|
|
||||||
## Commercial Indication
|
## Commercial Indication
|
||||||
You can use this project freely, and we'd recommend you to contact us for el 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 mi 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
|
||||||
|
|
||||||
@@ -28,31 +30,27 @@ Powerful Android / iOS app modifying tool, you can make your plugins y app more
|
|||||||
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 el 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
2
app/.gitignore
vendored
@@ -1,5 +1,5 @@
|
|||||||
/build
|
/build
|
||||||
/release
|
/release
|
||||||
*.apk
|
*.apk
|
||||||
/libs/foza-release.aar
|
/libs/*.aar
|
||||||
/debug/
|
/debug/
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ apply plugin: 'com.android.application'
|
|||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdk 34
|
compileSdkPreview "Baklava"
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "net_62v.launcher"
|
applicationId "net_62v.launcher"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdk 34
|
targetSdk 35
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
android {
|
android {
|
||||||
@@ -39,8 +39,8 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_21
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_21
|
||||||
}
|
}
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
jniLibs {
|
jniLibs {
|
||||||
@@ -52,14 +52,16 @@ android {
|
|||||||
checkReleaseBuilds false
|
checkReleaseBuilds false
|
||||||
}
|
}
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
jvmTarget = '1.8'
|
jvmTarget = '21'
|
||||||
}
|
}
|
||||||
namespace 'com.android.launcher'
|
namespace 'com.android.launcher'
|
||||||
|
buildFeatures {
|
||||||
|
buildConfig true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 'com.jakewharton.android.repackaged:dalvik-dx:14.0.0_r21'
|
||||||
implementation 'com.jakewharton.android.repackaged:dalvik-dx:11.0.0_r3'
|
|
||||||
}
|
}
|
||||||
|
|||||||
1
app/proguard-rules.pro
vendored
1
app/proguard-rules.pro
vendored
@@ -2,6 +2,7 @@
|
|||||||
-optimizationpasses 7
|
-optimizationpasses 7
|
||||||
-allowaccessmodification
|
-allowaccessmodification
|
||||||
-keep class android.** { *; }
|
-keep class android.** { *; }
|
||||||
|
-keep class de.** { *; }
|
||||||
-keepclassmembers class * {
|
-keepclassmembers class * {
|
||||||
native <methods>;
|
native <methods>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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)) {
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -434,7 +434,11 @@ 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);
|
||||||
LauncherLoader.instance().waitForAndGetInitialService(() -> {
|
LauncherLoader.instance().waitForAndGetInitialService(() -> {
|
||||||
FozaPackageManager.get().acquireObtainAppSplash();
|
try {
|
||||||
|
MetaPackageManager.acquireObtainAppSplash();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2022,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
|
||||||
@@ -2125,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;
|
||||||
|
|||||||
@@ -76,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();
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package com.android.launcher2
|
package com.android.launcher2
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import lu.die.foza.SuperAPI.FozaCore
|
import net_62v.external.MetaCore
|
||||||
import lu.die.fozacompatibility.FozaPackageManager
|
import net_62v.external.MetaPackageManager
|
||||||
|
|
||||||
object LauncherLoader {
|
object LauncherLoader {
|
||||||
// For java
|
// For java
|
||||||
@@ -10,12 +10,12 @@ object LauncherLoader {
|
|||||||
fun instance() = this
|
fun instance() = this
|
||||||
fun waitForAndGetInitialService(
|
fun waitForAndGetInitialService(
|
||||||
serviceCallback : () -> Unit
|
serviceCallback : () -> Unit
|
||||||
) = FozaCore.registerCoreCallback(
|
) = MetaCore.registerCoreCallback(
|
||||||
serviceCallback
|
serviceCallback
|
||||||
)
|
)
|
||||||
fun obtainLaunchIntentByPackage(
|
fun obtainLaunchIntentByPackage(
|
||||||
src : String
|
src : String
|
||||||
) = FozaPackageManager.get().getLaunchIntentForPackage(
|
) = MetaPackageManager.getLaunchIntentForPackage(
|
||||||
Intent(Intent.ACTION_MAIN).setPackage(src) /* Package Name */
|
Intent(Intent.ACTION_MAIN).setPackage(src) /* Package Name */
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -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 (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<!-- Full screen view projects under the status bar and contains the background -->
|
<!-- Full screen view projects under the status bar and contains the background -->
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:launcher="http://schemas.android.com/apk/res-auto"
|
xmlns:launcher="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:fitsSystemWindows="true"
|
||||||
android:id="@+id/launcher"
|
android:id="@+id/launcher"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|||||||
262
app/src/main/res/values-ar/strings.xml
Normal file
262
app/src/main/res/values-ar/strings.xml
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2008 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
|
<!-- General -->
|
||||||
|
<skip />
|
||||||
|
<!-- اسم التطبيق -->
|
||||||
|
<string name="application_name">ميتا لانشر</string>
|
||||||
|
<!-- اسم التطبيق في واجهة الوصول -->
|
||||||
|
<string name="home">الرئيسية</string>
|
||||||
|
<!-- اسم جميع التطبيقات التي تعمل كـ uid هذا. -->
|
||||||
|
<string name="uid_name">تطبيقات أندرويد الأساسية</string>
|
||||||
|
<!-- اسم المجلد الافتراضي -->
|
||||||
|
<!-- عنوان مربع الحوار الذي يظهر بعد أن يختار المستخدم ورق الحائط من القائمة -->
|
||||||
|
<string name="chooser_wallpaper">اختر ورق الحائط من</string>
|
||||||
|
<!-- تسمية الزر على شاشة معرض ورق الحائط؛ يختار المستخدم هذا الزر لتعيين ورق حائط معين -->
|
||||||
|
<string name="wallpaper_instructions">تعيين ورق الحائط</string>
|
||||||
|
<!-- خيار في مربع الحوار "اختر ورق الحائط من" -->
|
||||||
|
<string name="pick_wallpaper">أوراق الحائط</string>
|
||||||
|
<!-- يظهر عندما يختار المستخدم اختصارًا لتطبيق تم إلغاء تثبيته [CHAR_LIMIT=none]-->
|
||||||
|
<string name="activity_not_found">التطبيق غير مثبت.</string>
|
||||||
|
<!-- تسميات علامات التبويب في درج التخصيص -->
|
||||||
|
<string name="widgets_tab_label">الأدوات</string>
|
||||||
|
|
||||||
|
<!-- لوحة تخصيص التطبيقات -->
|
||||||
|
<!-- رسالة لإخبار المستخدم بالضغط مع الاستمرار على أداة لإضافتها [CHAR_LIMIT=50] -->
|
||||||
|
<string name="long_press_widget_to_add">اضغط مع الاستمرار لالتقاط الأداة.</string>
|
||||||
|
<!-- نص زر السوق. تم إزالة نص زر السوق في Launcher.java
|
||||||
|
في واجهة الهاتف. [CHAR LIMIT=32] -->
|
||||||
|
<string name="market">متجر</string>
|
||||||
|
<!-- سلسلة التنسيق لأبعاد الأداة في الدرج -->
|
||||||
|
<string name="widget_dims_format">%1$d \u00d7 %2$d</string>
|
||||||
|
|
||||||
|
<!-- تنسيق تسمية اختيار الأداة الخارجية [CHAR_LIMIT=25] -->
|
||||||
|
<string name="external_drop_widget_pick_format" translatable="false">%1$s (%2$d \u00d7 %3$d)</string>
|
||||||
|
<!-- سلسلة خطأ الأداة الخارجية. هذه هي الرسالة التي تظهر
|
||||||
|
عندما تسحب عنصرًا إلى الشاشة الرئيسية ولا يمكن أن يتناسب،
|
||||||
|
أو يحدث خطأ. [CHAR_LIMIT=50] -->
|
||||||
|
<string name="external_drop_widget_error">لم يتمكن من إسقاط العنصر على هذه الشاشة الرئيسية.</string>
|
||||||
|
<!-- عنوان اختيار الأداة الخارجية. يظهر هذا كعنوان لـ
|
||||||
|
مربع الحوار الذي يتيح لك اختيار أي أدوات للتعامل مع إسقاط معين
|
||||||
|
إذا كانت هناك خيارات متعددة. [CHAR_LIMIT=35] -->
|
||||||
|
<string name="external_drop_widget_pick_title">اختر الأداة لإنشائها</string>
|
||||||
|
|
||||||
|
<!-- المجلدات -->
|
||||||
|
<skip />
|
||||||
|
<!-- تسمية حقل اسم المجلد في مربع حوار إعادة تسمية المجلد -->
|
||||||
|
<string name="rename_folder_label">اسم المجلد</string>
|
||||||
|
<!-- عنوان مربع الحوار -->
|
||||||
|
<string name="rename_folder_title">إعادة تسمية المجلد</string>
|
||||||
|
<!-- الأزرار في مربع حوار إعادة تسمية المجلد -->
|
||||||
|
<string name="rename_action">موافق</string>
|
||||||
|
<!-- الأزرار في مربع حوار إعادة تسمية المجلد -->
|
||||||
|
<string name="cancel_action">إلغاء</string>
|
||||||
|
|
||||||
|
<!-- Shortcuts -->
|
||||||
|
<skip />
|
||||||
|
<!-- Title of dialog box -->
|
||||||
|
<string name="menu_item_add_item">إضافة إلى الشاشة الرئيسية</string>
|
||||||
|
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of all apps -->
|
||||||
|
<string name="group_applications">التطبيقات</string>
|
||||||
|
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of all shortcuts -->
|
||||||
|
<string name="group_shortcuts">اختصارات</string>
|
||||||
|
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of all widgets/gadgets -->
|
||||||
|
<string name="group_widgets">الأدوات</string>
|
||||||
|
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of apps that can set the wallpaper -->
|
||||||
|
<string name="group_wallpapers">خلفيات</string>
|
||||||
|
<!-- Error message when user has filled all their home screens -->
|
||||||
|
<string name="completely_out_of_space">لا يوجد مزيد من المساحة على شاشاتك الرئيسية.</string>
|
||||||
|
<!-- Error message when user has filled a home screen -->
|
||||||
|
<string name="out_of_space">لا يوجد مزيد من المساحة على هذه الشاشة الرئيسية.</string>
|
||||||
|
<!-- Error message when user has filled the hotseat -->
|
||||||
|
<string name="hotseat_out_of_space">لا يوجد مزيد من المساحة في منطقة الاختصارات.</string>
|
||||||
|
<!-- Error message when user tries to drop an invalid item on the hotseat -->
|
||||||
|
<string name="invalid_hotseat_item">هذه الأداة كبيرة جدًا لمنطقة الاختصارات.</string>
|
||||||
|
<!-- Message displayed when a shortcut is created by an external application -->
|
||||||
|
<string name="shortcut_installed">تم إنشاء اختصار \"<xliff:g id="name" example="Browser">%s</xliff:g>\".</string>
|
||||||
|
<!-- Message displayed when a shortcut is uninstalled by an external application -->
|
||||||
|
<string name="shortcut_uninstalled">تم إزالة اختصار \"<xliff:g id="name" example="Browser">%s</xliff:g>\".</string>
|
||||||
|
<!-- Message displayed when an external application attempts to create a shortcut that already exists -->
|
||||||
|
<string name="shortcut_duplicate">اختصار \"<xliff:g id="name" example="Browser">%s</xliff:g>\" موجود بالفعل.</string>
|
||||||
|
|
||||||
|
<!-- Title of dialog when user is selecting shortcut to add to homescreen -->
|
||||||
|
<string name="title_select_shortcut">اختر اختصار</string>
|
||||||
|
<!-- Title of dialog when user is selecting an application to add to homescreen -->
|
||||||
|
<string name="title_select_application">اختر تطبيق</string>
|
||||||
|
|
||||||
|
<!-- All applications label -->
|
||||||
|
<string name="all_apps_button_label">التطبيقات</string>
|
||||||
|
<!-- Label for button in all applications label to go back home (to the workspace / desktop) for accessibility (spoken when the button gets focus). -->
|
||||||
|
<string name="all_apps_home_button_label">الرئيسية</string>
|
||||||
|
<!-- Label for trash icon on workspace. Meant to communicate the idea of removing the icon/widget from the home screen, but not permanently. [CHAR_LIMIT=30] -->
|
||||||
|
<string name="delete_zone_label_workspace">إزالة</string>
|
||||||
|
<!-- Label for trash icon in All Apps. The icon/widget will become completely unavailable on the device. [CHAR_LIMIT=30] -->
|
||||||
|
<string name="delete_zone_label_all_apps">إلغاء التثبيت</string>
|
||||||
|
|
||||||
|
<!-- Label for delete drop target. [CHAR_LIMIT=30] -->
|
||||||
|
<string name="delete_target_label">إزالة</string>
|
||||||
|
<!-- Label for uninstall drop target. [CHAR_LIMIT=30] -->
|
||||||
|
<string name="delete_target_uninstall_label">إلغاء التثبيت</string>
|
||||||
|
<!-- Label for the info icon. [CHAR_LIMIT=30] -->
|
||||||
|
<string name="info_target_label">معلومات التطبيق</string>
|
||||||
|
|
||||||
|
<!-- Accessibility: Search button -->
|
||||||
|
<string name="accessibility_search_button">بحث</string>
|
||||||
|
<!-- Accessibility: Voice Search button -->
|
||||||
|
<string name="accessibility_voice_search_button">بحث صوتي</string>
|
||||||
|
<!-- Accessibility: AllApps button -->
|
||||||
|
<string name="accessibility_all_apps_button">التطبيقات</string>
|
||||||
|
<!-- Accessibility: Delete button -->
|
||||||
|
<string name="accessibility_delete_button">إزالة</string>
|
||||||
|
|
||||||
|
<!-- Label for trash icon in All Apps, when an updated system app is selected. The update will be uninstalled. [CHAR_LIMIT=30] -->
|
||||||
|
<string name="delete_zone_label_all_apps_system_app">إلغاء تثبيت التحديث</string>
|
||||||
|
|
||||||
|
<!-- Menus items: -->
|
||||||
|
<skip />
|
||||||
|
<!-- Verb, menu item used to add an item on the desktop -->
|
||||||
|
<string name="menu_add">إضافة</string>
|
||||||
|
<!-- Menu item used to manage installed applications -->
|
||||||
|
<string name="menu_manage_apps">إدارة التطبيقات</string>
|
||||||
|
<!-- Noun, menu item used to set the desktop's wallpaper -->
|
||||||
|
<string name="menu_wallpaper">خلفية الشاشة</string>
|
||||||
|
<!-- Verb, menu item used to initiate global search -->
|
||||||
|
<string name="menu_search">بحث</string>
|
||||||
|
<!-- Noun, menu item used to bring down the notifications shade -->
|
||||||
|
<string name="menu_notifications">الإشعارات</string>
|
||||||
|
<!-- Noun, menu item used to show the system settings -->
|
||||||
|
<string name="menu_settings">إعدادات النظام</string>
|
||||||
|
<!-- Noun, menu item used to show help. [CHAR_LIMIT=none] -->
|
||||||
|
<string name="menu_help">مساعدة</string>
|
||||||
|
|
||||||
|
<!-- URL pointing to help text. If empty, no link to help will be created [DO NOT TRANSLATE] -->
|
||||||
|
<string name="help_url" translatable="false"></string>
|
||||||
|
|
||||||
|
<!-- Strings for the contextual action bar (CAB) in All Apps -->
|
||||||
|
<skip />
|
||||||
|
<!-- Describes the button for uninstalling the currently selected application.
|
||||||
|
Text is not displayed, but provided for accessibility. [CHAR_LIMIT=none] -->
|
||||||
|
<string name="cab_menu_delete_app">إلغاء تثبيت التطبيق</string>
|
||||||
|
<!-- Describes the button for getting details/info about currently selected application.
|
||||||
|
Text is not displayed, but provided for accessibility. [CHAR_LIMIT=none] -->
|
||||||
|
<string name="cab_menu_app_info">تفاصيل التطبيق</string>
|
||||||
|
<!-- Appears in the CAB when an app is selected in All Apps or Customize mode. [CHAR_LIMIT=50] -->
|
||||||
|
<string name="cab_app_selection_text">تم اختيار 1 تطبيق</string>
|
||||||
|
<!-- Appears in the CAB when a widget is selected in Customize mode. [CHAR_LIMIT=50] -->
|
||||||
|
<string name="cab_widget_selection_text">تم اختيار 1 أداة</string>
|
||||||
|
<!-- Appears in the CAB when a folder is selected in Customize mode. [CHAR_LIMIT=50] -->
|
||||||
|
<string name="cab_folder_selection_text">تم اختيار 1 مجلد</string>
|
||||||
|
<!-- Appears in the CAB when a shortcut is selected in Customize mode. [CHAR_LIMIT=50] -->
|
||||||
|
<string name="cab_shortcut_selection_text">تم اختيار 1 اختصار</string>
|
||||||
|
|
||||||
|
<!-- Permissions: -->
|
||||||
|
<skip />
|
||||||
|
<!-- Permission short label -->
|
||||||
|
<string name="permlab_install_shortcut">تثبيت الاختصارات</string>
|
||||||
|
<!-- Permission description -->
|
||||||
|
<string name="permdesc_install_shortcut">يسمح للتطبيق بإضافة اختصارات دون تدخل المستخدم.</string>
|
||||||
|
<!-- Permission short label -->
|
||||||
|
<string name="permlab_uninstall_shortcut">إلغاء تثبيت الاختصارات</string>
|
||||||
|
<!-- Permission description -->
|
||||||
|
<string name="permdesc_uninstall_shortcut">يسمح للتطبيق بإزالة اختصارات دون تدخل المستخدم.</string>
|
||||||
|
<!-- Permission short label -->
|
||||||
|
<string name="permlab_read_settings">قراءة إعدادات الشاشة الرئيسية والاختصارات</string>
|
||||||
|
<!-- Permission description -->
|
||||||
|
<string name="permdesc_read_settings">يسمح للتطبيق بقراءة الإعدادات والاختصارات في الشاشة الرئيسية.</string>
|
||||||
|
<!-- Permission short label -->
|
||||||
|
<string name="permlab_write_settings">كتابة إعدادات الشاشة الرئيسية والاختصارات</string>
|
||||||
|
<!-- Permission description -->
|
||||||
|
<string name="permdesc_write_settings">يسمح للتطبيق بتغيير الإعدادات والاختصارات في الشاشة الرئيسية.</string>
|
||||||
|
|
||||||
|
<!-- Widgets: -->
|
||||||
|
<skip />
|
||||||
|
|
||||||
|
<!-- Text to show user in place of a gadget when we can't display it properly -->
|
||||||
|
<string name="gadget_error_text">مشكلة في تحميل الأداة</string>
|
||||||
|
|
||||||
|
<!-- Text to inform the user that they can't uninstall a system application -->
|
||||||
|
<string name="uninstall_system_app_text">هذا تطبيق نظام ولا يمكن إلغاء تثبيته.</string>
|
||||||
|
|
||||||
|
<!-- Title of the Android Dreams (screensaver) module -->
|
||||||
|
<string name="dream_name">مشغل الصواريخ</string>
|
||||||
|
|
||||||
|
<!-- Default folder title -->
|
||||||
|
<string name="folder_hint_text">مجلد بلا اسم</string>
|
||||||
|
|
||||||
|
<!-- Accessibility -->
|
||||||
|
<skip />
|
||||||
|
|
||||||
|
<!-- The format string for Workspace descriptions [CHAR_LIMIT=none] -->
|
||||||
|
<string name="workspace_description_format">شاشة الرئيسية %1$d</string>
|
||||||
|
|
||||||
|
<!-- The format string for default page scroll text [CHAR_LIMIT=none] -->
|
||||||
|
<string name="default_scroll_format">الصفحة %1$d من %2$d</string>
|
||||||
|
<!-- The format string for Workspace page scroll text [CHAR_LIMIT=none] -->
|
||||||
|
<string name="workspace_scroll_format">شاشة الرئيسية %1$d من %2$d</string>
|
||||||
|
<!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] -->
|
||||||
|
<string name="apps_customize_apps_scroll_format">صفحة التطبيقات %1$d من %2$d</string>
|
||||||
|
<!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] -->
|
||||||
|
<string name="apps_customize_widgets_scroll_format">صفحة الأدوات %1$d من %2$d</string>
|
||||||
|
|
||||||
|
<!-- Clings -->
|
||||||
|
<!-- The title text for the workspace cling [CHAR_LIMIT=none] -->
|
||||||
|
<string name="workspace_cling_title">اجعل نفسك في المنزل</string>
|
||||||
|
<!-- The description of how to use the workspace [CHAR_LIMIT=none] -->
|
||||||
|
<string name="workspace_cling_move_item">يمكنك وضع تطبيقاتك المفضلة هنا.</string>
|
||||||
|
<!-- The description of how to open all apps from the workspace [CHAR_LIMIT=none] -->
|
||||||
|
<string name="workspace_cling_open_all_apps">لرؤية جميع تطبيقاتك، المس الدائرة.</string>
|
||||||
|
<!-- The title text for the All Apps cling [CHAR_LIMIT=none] -->
|
||||||
|
<string name="all_apps_cling_title">اختر بعض التطبيقات</string>
|
||||||
|
<!-- The description of how to pick up and add an item to the workspace [CHAR_LIMIT=none] -->
|
||||||
|
<string name="all_apps_cling_add_item">لإضافة تطبيق إلى الشاشة الرئيسية، المس واحتفظ به.</string>
|
||||||
|
<!-- The title text for the Folder cling [CHAR_LIMIT=none] -->
|
||||||
|
<string name="folder_cling_title">نظم تطبيقاتك باستخدام المجلدات</string>
|
||||||
|
<!-- The description of how to move an app [CHAR_LIMIT=none] -->
|
||||||
|
<string name="folder_cling_move_item">لتحريك تطبيق، المس واحتفظ به.</string>
|
||||||
|
<!-- The description of how to create a folder [CHAR_LIMIT=none] -->
|
||||||
|
<string name="folder_cling_create_folder">لإنشاء مجلد جديد على الشاشة الرئيسية، ضع تطبيقًا فوق آخر.</string>
|
||||||
|
<!-- The text on the button to dismiss a cling [CHAR_LIMIT=none] -->
|
||||||
|
<string name="cling_dismiss">حسناً</string>
|
||||||
|
<!-- Error message on dummy custom cling layout [DO NOT TRANSLATE] -->
|
||||||
|
<!-- <add-resource type="string" name="default_folder_name" /> -->
|
||||||
|
|
||||||
|
<!-- Folder accessibility -->
|
||||||
|
<!-- The format string for when a folder is opened, speaks the dimensions -->
|
||||||
|
<string name="folder_opened">تم فتح المجلد، <xliff:g id="width" example="5">%1$d</xliff:g> في <xliff:g id="height" example="3">%2$d</xliff:g></string>
|
||||||
|
<!-- Instruction that clicking outside will close folder -->
|
||||||
|
<string name="folder_tap_to_close">اضغط لإغلاق المجلد</string>
|
||||||
|
<!-- Instruction that clicking outside will commit folder rename -->
|
||||||
|
<string name="folder_tap_to_rename">اضغط لحفظ إعادة التسمية</string>
|
||||||
|
<!-- Indication that folder closed -->
|
||||||
|
<string name="folder_closed">تم إغلاق المجلد</string>
|
||||||
|
<!-- Folder renamed format -->
|
||||||
|
<string name="folder_renamed">تم إعادة تسمية المجلد إلى <xliff:g id="name" example="Games">%1$s</xliff:g></string>
|
||||||
|
<!-- Folder name format -->
|
||||||
|
<string name="folder_name_format">مجلد: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
|
||||||
|
|
||||||
|
<!-- Strings used in device overlays -->
|
||||||
|
|
||||||
|
<!-- Clings -->
|
||||||
|
<!-- Dummy string [CHAR_LIMIT=40] -->
|
||||||
|
<!-- Dummy string [CHAR_LIMIT=60] -->
|
||||||
|
<!-- Dummy string [CHAR_LIMIT=40] -->
|
||||||
|
<!-- Dummy string [CHAR_LIMIT=60] -->
|
||||||
|
|
||||||
|
</resources>
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,10 +7,8 @@ buildscript {
|
|||||||
google()
|
google()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.1.3'
|
classpath 'com.android.tools.build:gradle:8.13.0'
|
||||||
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20'
|
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.21'
|
||||||
// classpath 'com.android.tools.build:gradle-experimental:3.3.2'
|
|
||||||
// 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
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,5 @@ android.enableJetifier=true
|
|||||||
# Kotlin code style for this project: "official" or "obsolete":
|
# Kotlin code style for this project: "official" or "obsolete":
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
android.injected.testOnly=false
|
android.injected.testOnly=false
|
||||||
android.defaults.buildfeatures.buildconfig=true
|
|
||||||
android.nonTransitiveRClass=false
|
android.nonTransitiveRClass=false
|
||||||
android.nonFinalResIds=false
|
android.nonFinalResIds=false
|
||||||
Reference in New Issue
Block a user