添加磁贴工具...
This commit is contained in:
		| @@ -1,8 +1,8 @@ | ||||
| #Created by .winboll/winboll_app_build.gradle | ||||
| #Wed Apr 02 21:25:51 HKT 2025 | ||||
| #Tue Apr 15 02:52:13 GMT 2025 | ||||
| stageCount=1 | ||||
| libraryProject= | ||||
| baseVersion=15.2 | ||||
| publishVersion=15.2.0 | ||||
| buildCount=0 | ||||
| buildCount=12 | ||||
| baseBetaVersion=15.2.1 | ||||
|   | ||||
| @@ -54,6 +54,21 @@ | ||||
|  | ||||
|         <service android:name=".services.AssistantService"/> | ||||
|  | ||||
|         <service | ||||
|             android:name=".AppBaseTileService" | ||||
|             android:exported="true" | ||||
|             android:label="@string/tileservice_name" | ||||
|             android:icon="@drawable/ic_launcher" | ||||
|             android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> | ||||
|  | ||||
|             <intent-filter> | ||||
|  | ||||
|                 <action android:name="android.service.quicksettings.action.QS_TILE"/> | ||||
|  | ||||
|             </intent-filter> | ||||
|  | ||||
|         </service> | ||||
|  | ||||
|         <receiver | ||||
|             android:name=".receivers.MainReceiver" | ||||
|             android:enabled="true" | ||||
|   | ||||
| @@ -0,0 +1,83 @@ | ||||
| package cc.winboll.studio.autoinstaller; | ||||
| import android.content.Context; | ||||
| import android.service.quicksettings.Tile; | ||||
| import android.service.quicksettings.TileService; | ||||
| import cc.winboll.studio.autoinstaller.models.MainServiceBean; | ||||
| import cc.winboll.studio.autoinstaller.services.MainService; | ||||
| import cc.winboll.studio.autoinstaller.models.AppConfigs; | ||||
|  | ||||
| /** | ||||
|  * @Author ZhanGSKen@AliYun.Com | ||||
|  * @Date 2025/04/15 09:24:46 | ||||
|  * @Describe 磁贴工具服务类 | ||||
|  */ | ||||
| public class AppBaseTileService extends TileService { | ||||
|     public static final String TAG = "AppBaseTileService"; | ||||
|  | ||||
|     volatile static AppBaseTileService _AppBaseTileService; | ||||
|  | ||||
|     @Override | ||||
|     public void onStartListening() { | ||||
|         super.onStartListening(); | ||||
|         _AppBaseTileService = this; | ||||
|         Tile tile = getQsTile(); | ||||
|         //MainServiceBean bean = MainServiceBean.loadBean(this, MainServiceBean.class); | ||||
|          | ||||
|         if (AppConfigs.getInstance(AppBaseTileService.this).isEnableService()) { | ||||
|             //MainService.startMainService(context); | ||||
|             tile.setState(Tile.STATE_ACTIVE); | ||||
|             tile.setIcon(android.graphics.drawable.Icon.createWithResource(this, R.drawable.ic_cloud)); | ||||
|         } else { | ||||
|             //MainService.stopMainService(context); | ||||
|             tile.setState(Tile.STATE_INACTIVE); | ||||
|             tile.setIcon(android.graphics.drawable.Icon.createWithResource(this, R.drawable.ic_cloud_outline)); | ||||
|         } | ||||
|         tile.updateTile(); | ||||
| //        Tile tile = getQsTile(); | ||||
| //        tile.setState(Tile.STATE_INACTIVE); | ||||
| //        tile.setLabel(getString(R.string.tileservice_name)); | ||||
| //        tile.setIcon(android.graphics.drawable.Icon.createWithResource(this, R.drawable.ic_cloud_outline)); | ||||
| //        tile.updateTile(); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void onClick() { | ||||
|         super.onClick(); | ||||
|         Tile tile = getQsTile(); | ||||
| //        MainServiceBean bean = MainServiceBean.loadBean(this, MainServiceBean.class); | ||||
| //        if (bean == null) { | ||||
| //            bean = new MainServiceBean(); | ||||
| //        } | ||||
|  | ||||
|         if (tile.getState() == Tile.STATE_ACTIVE) { | ||||
| //            bean.setIsEnable(false); | ||||
| //            MainServiceBean.saveBean(this, bean); | ||||
|             AppConfigs.getInstance(AppBaseTileService.this).setIsEnableService(false); | ||||
|             AppConfigs.getInstance(AppBaseTileService.this).saveAppConfigs(); | ||||
|             MainActivity.stopMainService(); | ||||
|         } else if (tile.getState() == Tile.STATE_INACTIVE) { | ||||
|             AppConfigs.getInstance(AppBaseTileService.this).setIsEnableService(true); | ||||
|             AppConfigs.getInstance(AppBaseTileService.this).saveAppConfigs(); | ||||
|             MainActivity.startMainService(); | ||||
|         } | ||||
|         updateServiceIconStatus(this); | ||||
|     } | ||||
|  | ||||
|     public static void updateServiceIconStatus(Context context) { | ||||
|         if (_AppBaseTileService == null) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         Tile tile = _AppBaseTileService.getQsTile(); | ||||
|         MainServiceBean bean = MainServiceBean.loadBean(context, MainServiceBean.class); | ||||
|         if (bean != null && bean.isEnable()) { | ||||
|             tile.setState(Tile.STATE_ACTIVE); | ||||
|             tile.setIcon(android.graphics.drawable.Icon.createWithResource(context, R.drawable.ic_cloud)); | ||||
|         } else { | ||||
|             tile.setState(Tile.STATE_INACTIVE); | ||||
|             tile.setIcon(android.graphics.drawable.Icon.createWithResource(context, R.drawable.ic_cloud_outline)); | ||||
|         } | ||||
|         tile.updateTile(); | ||||
|     } | ||||
| } | ||||
| @@ -6,6 +6,8 @@ import android.graphics.Color; | ||||
| import android.net.Uri; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.os.Handler; | ||||
| import android.os.Message; | ||||
| import android.view.View; | ||||
| import android.widget.EditText; | ||||
| import android.widget.RadioButton; | ||||
| @@ -30,8 +32,12 @@ import java.util.Map; | ||||
| public class MainActivity extends Activity { | ||||
|     public static final String TAG = "MainActivity"; | ||||
|  | ||||
|     public static final int MSG_UPDATE_STATUS = 0; | ||||
|  | ||||
|     private static final int INSTALL_PERMISSION_CODE = 1; | ||||
|      | ||||
|  | ||||
|     static MainActivity _MainActivity; | ||||
|  | ||||
|     ArrayList<APKModel> _APKModelList = new ArrayList<APKModel>(); | ||||
|     LogView mLogView; | ||||
|     TextClock mTextClock; | ||||
| @@ -61,6 +67,7 @@ public class MainActivity extends Activity { | ||||
|  | ||||
|         super.onCreate(savedInstanceState); | ||||
| 		setContentView(R.layout.activity_main); | ||||
|         _MainActivity = this; | ||||
|         initView(); | ||||
|  | ||||
|         if (getIntent().getAction().equals(ACTION_NEW_INSTALLTASK)) { | ||||
| @@ -77,11 +84,7 @@ public class MainActivity extends Activity { | ||||
|         mLogView = findViewById(R.id.logview); | ||||
|         mLogView.start(); | ||||
|  | ||||
|         AppConfigs appConfigs = AppConfigs.loadAppConfigs(this); | ||||
|         if (appConfigs == null) { | ||||
|             appConfigs = new AppConfigs();  | ||||
|             AppConfigs.saveAppConfigs(this, appConfigs); | ||||
|         } | ||||
|         AppConfigs appConfigs = AppConfigs.getInstance(this).loadAppConfigs(this); | ||||
|  | ||||
|         if (appConfigs.getSetupMode() == AppConfigs.SetupMode.WATCHOUTPUTINSTALLER) { | ||||
|             ((RadioButton)findViewById(R.id.activitymainRadioButton1)).setChecked(true); | ||||
| @@ -196,10 +199,15 @@ public class MainActivity extends Activity { | ||||
|     } | ||||
|  | ||||
|     public void onLockPath(View view) { | ||||
|         AppConfigs appConfigs = AppConfigs.loadAppConfigs(this); | ||||
|  | ||||
|         Switch sw = (Switch)view; | ||||
|         if (sw.isChecked()) { | ||||
|         setMainServiceStatus(sw.isChecked()); | ||||
|     } | ||||
|  | ||||
|     public void setMainServiceStatus(boolean isEnable) { | ||||
|         AppConfigs appConfigs = AppConfigs.getInstance(this).loadAppConfigs(this); | ||||
|  | ||||
|         Switch sw = (Switch)findViewById(R.id.activitymainSwitch1); | ||||
|         if (isEnable) { | ||||
|             String szFilePath = mEditText.getText().toString(); | ||||
|  | ||||
|             // 设置空路径时退出 | ||||
| @@ -247,7 +255,7 @@ public class MainActivity extends Activity { | ||||
|             stopWatchingFile(); | ||||
|  | ||||
|         } | ||||
|         AppConfigs.saveAppConfigs(this, appConfigs); | ||||
|         AppConfigs.getInstance(this).saveAppConfigs(this, appConfigs); | ||||
|     } | ||||
|  | ||||
|     void stopWatchingFile() { | ||||
| @@ -307,7 +315,7 @@ public class MainActivity extends Activity { | ||||
|      }*/ | ||||
|  | ||||
|     public void onChangeSetupMode(View view) { | ||||
|         AppConfigs appConfigs = AppConfigs.loadAppConfigs(this); | ||||
|         AppConfigs appConfigs = AppConfigs.getInstance(this).loadAppConfigs(this); | ||||
|  | ||||
|         if (view.getId() == R.id.activitymainRadioButton1) { | ||||
|             appConfigs.setSetupMode(AppConfigs.SetupMode.WATCHOUTPUTINSTALLER); | ||||
| @@ -316,6 +324,42 @@ public class MainActivity extends Activity { | ||||
|             appConfigs.setSetupMode(AppConfigs.SetupMode.NEWAPKINFONEWAPKINFO); | ||||
|             ((RadioButton)findViewById(R.id.activitymainRadioButton1)).setChecked(false); | ||||
|         } | ||||
|         AppConfigs.saveAppConfigs(this, appConfigs); | ||||
|         AppConfigs.getInstance(this).saveAppConfigs(this, appConfigs); | ||||
|     } | ||||
|  | ||||
|     // 定义Handler | ||||
|     static Handler _Handler = new Handler() { | ||||
|         @Override | ||||
|         public void handleMessage(Message msg) { | ||||
|             super.handleMessage(msg); | ||||
|             if (msg.what == MSG_UPDATE_STATUS) { | ||||
|                 if (_MainActivity != null) { | ||||
|                     boolean isEnableMainService = (boolean)msg.obj; | ||||
|                     // 处理消息,这里更新 MainService 的状态 | ||||
|                     _MainActivity.setMainServiceStatus(isEnableMainService); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
|      | ||||
|     static void updateMainServiceStatus(boolean isEnable) { | ||||
|         if (_Handler != null) { | ||||
|             Message msg = new Message(); | ||||
|             msg.obj = isEnable; | ||||
|             msg.what = MSG_UPDATE_STATUS; | ||||
|             _Handler.sendMessage(msg); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     public static void stopMainService() { | ||||
|         if (_MainActivity != null && _Handler != null) { | ||||
|             updateMainServiceStatus(false); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     public static void startMainService() { | ||||
|         if (_MainActivity != null && _Handler != null) { | ||||
|             updateMainServiceStatus(true); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -15,6 +15,8 @@ import java.io.IOException; | ||||
| import java.io.Serializable; | ||||
| import java.io.StringReader; | ||||
| import java.io.StringWriter; | ||||
| import android.drm.DrmConvertedStatus; | ||||
| import com.hjq.toast.ToastUtils; | ||||
|  | ||||
| public class AppConfigs implements Serializable { | ||||
|  | ||||
| @@ -26,6 +28,20 @@ public class AppConfigs implements Serializable { | ||||
|         NEWAPKINFONEWAPKINFO  // 调用[应用信息查看器]打开应用包 | ||||
|         }; | ||||
|  | ||||
|     static volatile AppConfigs _AppConfigs; | ||||
|     Context mContext; | ||||
|  | ||||
|     AppConfigs(Context context) { | ||||
|         mContext = context; | ||||
|     } | ||||
|  | ||||
|     public static synchronized AppConfigs getInstance(Context context) { | ||||
|         if (_AppConfigs == null) { | ||||
|             _AppConfigs = new AppConfigs(context); | ||||
|         } | ||||
|         return _AppConfigs; | ||||
|     } | ||||
|  | ||||
|     // 监控文件路径 | ||||
|     private String watchingFilePath = ""; | ||||
|  | ||||
| @@ -85,8 +101,8 @@ public class AppConfigs implements Serializable { | ||||
|         return ""; | ||||
|     } | ||||
|  | ||||
|     public static AppConfigs parseAppConfigs(String szAppConfigs) { | ||||
|         AppConfigs appConfigs = new AppConfigs(); | ||||
|     public AppConfigs parseAppConfigs(String szAppConfigs) { | ||||
|         AppConfigs appConfigs = new AppConfigs(mContext); | ||||
|         // 创建 JsonWriter 对象 | ||||
|         StringReader stringReader = new StringReader(szAppConfigs); | ||||
|         JsonReader jsonReader = new | ||||
| @@ -122,19 +138,20 @@ public class AppConfigs implements Serializable { | ||||
|         return context.getExternalFilesDir(TAG) + "/" + TAG + ".json"; | ||||
|     } | ||||
|  | ||||
|     public static AppConfigs loadAppConfigs(Context context) { | ||||
|     public AppConfigs loadAppConfigs(Context context) { | ||||
|         AppConfigs appConfigs = null; | ||||
|         try { | ||||
|             String szJson = FileUtil.readFile(getDataPath(context)); | ||||
|             appConfigs = AppConfigs.parseAppConfigs(szJson); | ||||
|             appConfigs = AppConfigs.getInstance(mContext).parseAppConfigs(szJson); | ||||
|         } catch (IOException e) { | ||||
|             LogUtils.d(TAG, e.getMessage(), Thread.currentThread().getStackTrace()); | ||||
|         } | ||||
|         return appConfigs; | ||||
|     } | ||||
|  | ||||
|     public static void saveAppConfigs(Context context, AppConfigs appConfigs) { | ||||
|     public void saveAppConfigs(Context context, AppConfigs appConfigs) { | ||||
|         try { | ||||
|             ToastUtils.show(String.format("AppConfigs set enable service to %s", appConfigs.isEnableService())); | ||||
|             //LogUtils.d(TAG, "appConfigs is : " + appConfigs.toString()); | ||||
|             String szJson = appConfigs.toString(); | ||||
|             FileUtil.writeFile(getDataPath(context), szJson); | ||||
| @@ -142,4 +159,8 @@ public class AppConfigs implements Serializable { | ||||
|             LogUtils.d(TAG, e.getMessage(), Thread.currentThread().getStackTrace()); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     public void saveAppConfigs() { | ||||
|         saveAppConfigs(mContext, this); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,67 @@ | ||||
| package cc.winboll.studio.autoinstaller.models; | ||||
| import android.util.JsonReader; | ||||
| import android.util.JsonWriter; | ||||
| import cc.winboll.studio.libappbase.BaseBean; | ||||
| import java.io.IOException; | ||||
|  | ||||
| /** | ||||
|  * @Author ZhanGSKen@AliYun.Com | ||||
|  * @Date 2025/04/15 09:27:39 | ||||
|  * @Describe MainServiceBean | ||||
|  */ | ||||
| public class MainServiceBean extends BaseBean { | ||||
|  | ||||
|     public static final String TAG = "MainServiceBean"; | ||||
|  | ||||
|     boolean isEnable; | ||||
|  | ||||
|     public MainServiceBean() { | ||||
|         this.isEnable = false; | ||||
|     } | ||||
|  | ||||
|     public void setIsEnable(boolean isEnable) { | ||||
|         this.isEnable = isEnable; | ||||
|     } | ||||
|  | ||||
|     public boolean isEnable() { | ||||
|         return isEnable; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public String getName() { | ||||
|         return MainServiceBean.class.getName(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException { | ||||
|         super.writeThisToJsonWriter(jsonWriter); | ||||
|         jsonWriter.name("isEnable").value(isEnable()); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException { | ||||
|         if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else { | ||||
|             if (name.equals("isEnable")) { | ||||
|                 setIsEnable(jsonReader.nextBoolean()); | ||||
|             } else { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException { | ||||
|         jsonReader.beginObject(); | ||||
|         while (jsonReader.hasNext()) { | ||||
|             String name = jsonReader.nextName(); | ||||
|             if (!initObjectsFromJsonReader(jsonReader, name)) { | ||||
|                 jsonReader.skipValue(); | ||||
|             } | ||||
|         } | ||||
|         // 结束 JSON 对象 | ||||
|         jsonReader.endObject(); | ||||
|         return this; | ||||
|     } | ||||
| } | ||||
| @@ -23,7 +23,7 @@ public class MainReceiver extends BroadcastReceiver { | ||||
|     public void onReceive(Context context, Intent intent) { | ||||
|         String szAction = intent.getAction(); | ||||
|         if (szAction.equals(ACTION_BOOT_COMPLETED)) { | ||||
|             AppConfigs appConfigs = AppConfigs.loadAppConfigs(context); | ||||
|             AppConfigs appConfigs = AppConfigs.getInstance(context).loadAppConfigs(context); | ||||
|             if (appConfigs.isEnableService()) { | ||||
|                 Intent intentService = new Intent(context, MainService.class); | ||||
|                 //intentService.putExtra(MainService.EXTRA_APKFILEPATH, appConfigs.getWatchingFilePath()); | ||||
|   | ||||
| @@ -46,7 +46,7 @@ public class AssistantService extends Service { | ||||
|     public int onStartCommand(Intent intent, int flags, int startId) { | ||||
|         //LogUtils.d(TAG, "call onStartCommand(...)"); | ||||
|         run(); | ||||
|         AppConfigs appConfigs = AppConfigs.loadAppConfigs(AssistantService.this); | ||||
|         AppConfigs appConfigs = AppConfigs.getInstance(AssistantService.this).loadAppConfigs(AssistantService.this); | ||||
|         return appConfigs.isEnableService() ? Service.START_STICKY: super.onStartCommand(intent, flags, startId); | ||||
|     } | ||||
|  | ||||
| @@ -68,7 +68,7 @@ public class AssistantService extends Service { | ||||
|     // | ||||
|     void run() { | ||||
|         //LogUtils.d(TAG, "call run()"); | ||||
|         AppConfigs appConfigs = AppConfigs.loadAppConfigs(AssistantService.this); | ||||
|         AppConfigs appConfigs = AppConfigs.getInstance(AssistantService.this).loadAppConfigs(AssistantService.this); | ||||
|         if (appConfigs.isEnableService()) { | ||||
|             if (mIsThreadAlive == false) { | ||||
|                 // 设置运行状态 | ||||
| @@ -101,7 +101,7 @@ public class AssistantService extends Service { | ||||
|         @Override | ||||
|         public void onServiceDisconnected(ComponentName name) { | ||||
|             //LogUtils.d(TAG, "call onServiceDisconnected(...)"); | ||||
|             AppConfigs appConfigs = AppConfigs.loadAppConfigs(AssistantService.this); | ||||
|             AppConfigs appConfigs = AppConfigs.getInstance(AssistantService.this).loadAppConfigs(AssistantService.this); | ||||
|             if (appConfigs.isEnableService()) { | ||||
|                 wakeupAndBindMain(); | ||||
|             } | ||||
|   | ||||
| @@ -26,6 +26,7 @@ import com.hjq.toast.ToastUtils; | ||||
| import java.io.File; | ||||
| import java.lang.ref.WeakReference; | ||||
| import java.util.ArrayList; | ||||
| import cc.winboll.studio.autoinstaller.models.MainServiceBean; | ||||
|  | ||||
| public class MainService extends Service { | ||||
|  | ||||
| @@ -62,7 +63,7 @@ public class MainService extends Service { | ||||
|  | ||||
|     private void run() { | ||||
|  | ||||
|         AppConfigs appConfigs = AppConfigs.loadAppConfigs(MainService.this); | ||||
|         AppConfigs appConfigs = AppConfigs.getInstance(MainService.this).loadAppConfigs(MainService.this); | ||||
|         if (appConfigs.isEnableService()) { | ||||
|             if (_mIsServiceAlive == false) { | ||||
|                 // 设置运行状态 | ||||
| @@ -77,8 +78,8 @@ public class MainService extends Service { | ||||
|  | ||||
|                 startWatchingFile(appConfigs.getWatchingFilePath()); | ||||
|  | ||||
|                 LogUtils.d(TAG, "running..."); | ||||
|                 ToastUtils.show("running..."); | ||||
|                 //LogUtils.d(TAG, "running..."); | ||||
|                 //ToastUtils.show("running..."); | ||||
|  | ||||
|             } else { | ||||
|                 LogUtils.d(TAG, "_mIsServiceAlive is " + Boolean.toString(_mIsServiceAlive)); | ||||
| @@ -105,7 +106,7 @@ public class MainService extends Service { | ||||
|         LogUtils.d(TAG, "onStartCommand"); | ||||
|  | ||||
|         run(); | ||||
|         AppConfigs appConfigs = AppConfigs.loadAppConfigs(MainService.this); | ||||
|         AppConfigs appConfigs = AppConfigs.getInstance(MainService.this).loadAppConfigs(MainService.this); | ||||
|  | ||||
|         return appConfigs.isEnableService() ? Service.START_STICKY: super.onStartCommand(intent, flags, startId); | ||||
|     } | ||||
| @@ -122,7 +123,7 @@ public class MainService extends Service { | ||||
|         @Override | ||||
|         public void onServiceDisconnected(ComponentName name) { | ||||
|             //LogUtils.d(TAG, "call onServiceConnected(...)"); | ||||
|             AppConfigs appConfigs = AppConfigs.loadAppConfigs(MainService.this); | ||||
|             AppConfigs appConfigs = AppConfigs.getInstance(MainService.this).loadAppConfigs(MainService.this); | ||||
|             if (appConfigs.isEnableService()) { | ||||
|                 // 唤醒守护进程 | ||||
|                 wakeupAndBindAssistant(); | ||||
| @@ -164,7 +165,7 @@ public class MainService extends Service { | ||||
|  | ||||
|                     }); | ||||
|                 mFileListener.startWatching(); | ||||
|                 ToastUtils.show("Start watching."); | ||||
|                 //ToastUtils.show("Start watching."); | ||||
|             } else { | ||||
|                 // 父级文件夹不存在,就提示用户 | ||||
|                 Toast.makeText(getApplication(), fParentDir.toString() + " no exist.", Toast.LENGTH_SHORT).show(); | ||||
| @@ -247,7 +248,7 @@ public class MainService extends Service { | ||||
|             switch (message.what) { | ||||
|                 case MSG_INSTALL_APK: | ||||
|                     { | ||||
|                         AppConfigs appConfigs = AppConfigs.loadAppConfigs(theActivity); | ||||
|                         AppConfigs appConfigs = AppConfigs.getInstance(theActivity).loadAppConfigs(theActivity); | ||||
|                         if (appConfigs.getSetupMode() == AppConfigs.SetupMode.WATCHOUTPUTINSTALLER) { | ||||
|                             theActivity.installAPK2((String)message.obj); | ||||
|                         } else if (appConfigs.getSetupMode() == AppConfigs.SetupMode.NEWAPKINFONEWAPKINFO) { | ||||
|   | ||||
							
								
								
									
										11
									
								
								autoinstaller/src/main/res/drawable/ic_cloud.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								autoinstaller/src/main/res/drawable/ic_cloud.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="24dp" | ||||
|     android:height="24dp" | ||||
|     android:viewportHeight="24" | ||||
|     android:viewportWidth="24"> | ||||
|     <path | ||||
|         android:fillColor="#ff000000" | ||||
|         android:pathData="M6.5,20Q4.22,20 2.61,18.43 1,16.85 1,14.58 1,12.63 2.17,11.1 3.35,9.57 5.25,9.15 5.88,6.85 7.75,5.43 9.63,4 12,4 14.93,4 16.96,6.04 19,8.07 19,11 20.73,11.2 21.86,12.5 23,13.78 23,15.5 23,17.38 21.69,18.69 20.38,20 18.5,20Z"/> | ||||
|  | ||||
| </vector> | ||||
							
								
								
									
										11
									
								
								autoinstaller/src/main/res/drawable/ic_cloud_outline.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								autoinstaller/src/main/res/drawable/ic_cloud_outline.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     android:width="24dp" | ||||
|     android:height="24dp" | ||||
|     android:viewportHeight="24" | ||||
|     android:viewportWidth="24"> | ||||
|     <path | ||||
|         android:fillColor="#ff000000" | ||||
|         android:pathData="M6.5,20Q4.22,20 2.61,18.43 1,16.85 1,14.58 1,12.63 2.17,11.1 3.35,9.57 5.25,9.15 5.88,6.85 7.75,5.43 9.63,4 12,4 14.93,4 16.96,6.04 19,8.07 19,11 20.73,11.2 21.86,12.5 23,13.78 23,15.5 23,17.38 21.69,18.69 20.38,20 18.5,20M6.5,18H18.5Q19.55,18 20.27,17.27 21,16.55 21,15.5 21,14.45 20.27,13.73 19.55,13 18.5,13H17V11Q17,8.93 15.54,7.46 14.08,6 12,6 9.93,6 8.46,7.46 7,8.93 7,11H6.5Q5.05,11 4.03,12.03 3,13.05 3,14.5 3,15.95 4.03,17 5.05,18 6.5,18M12,12Z"/> | ||||
|  | ||||
| </vector> | ||||
| @@ -1,3 +1,4 @@ | ||||
| <resources> | ||||
|     <string name="app_name">AutoInstaller</string> | ||||
|     <string name="tileservice_name">AutoInstaller</string> | ||||
| </resources> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ZhanGSKen
					ZhanGSKen