Compare commits
9 Commits
apputils-v
...
autoinstal
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c302179960 | ||
|
|
df55608eb3 | ||
|
|
b64a229ab1 | ||
|
|
d507d4ac06 | ||
|
|
e815c08970 | ||
|
|
d780116031 | ||
|
|
5714aed761 | ||
|
|
f04f5cf77c | ||
|
|
6ccbaf8c32 |
@@ -1,36 +0,0 @@
|
|||||||
package cc.winboll.studio.apputils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author ZhanGSKen@QQ.COM
|
|
||||||
* @Date 2025/01/17 19:50:46
|
|
||||||
*/
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.widget.Toolbar;
|
|
||||||
import cc.winboll.studio.apputils.R;
|
|
||||||
import cc.winboll.studio.libapputils.views.StringToQrCodeView;
|
|
||||||
|
|
||||||
public class TestStringToQRCodeViewActivity extends Activity {
|
|
||||||
|
|
||||||
public static final String TAG = "TestStringToQrCodeViewActivity";
|
|
||||||
|
|
||||||
StringToQrCodeView mStringToQrCodeView;
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public Activity getActivity() {
|
|
||||||
// return this;
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
setContentView(R.layout.activity_teststringtoqrcodeview);
|
|
||||||
|
|
||||||
// 初始化工具栏
|
|
||||||
Toolbar mToolbar = findViewById(R.id.toolbar);
|
|
||||||
mToolbar.setSubtitle(TAG);
|
|
||||||
setActionBar(mToolbar);
|
|
||||||
|
|
||||||
mStringToQrCodeView = findViewById(R.id.activityteststringtoqrcodeviewStringToQrCodeView1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -18,18 +18,18 @@ def genVersionName(def versionName){
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 32
|
compileSdkVersion 30
|
||||||
buildToolsVersion "33.0.3"
|
buildToolsVersion "30.0.3"
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "cc.winboll.studio.autoinstaller"
|
applicationId "cc.winboll.studio.autoinstaller"
|
||||||
minSdkVersion 24
|
minSdkVersion 26
|
||||||
targetSdkVersion 30
|
targetSdkVersion 29
|
||||||
versionCode 2
|
versionCode 2
|
||||||
// versionName 更新后需要手动设置
|
// versionName 更新后需要手动设置
|
||||||
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
||||||
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
||||||
versionName "5.0"
|
versionName "15.2"
|
||||||
if(true) {
|
if(true) {
|
||||||
versionName = genVersionName("${versionName}")
|
versionName = genVersionName("${versionName}")
|
||||||
}
|
}
|
||||||
@@ -41,30 +41,33 @@ android {
|
|||||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_11
|
|
||||||
targetCompatibility JavaVersion.VERSION_11
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api 'cc.winboll.studio:winboll-shared:1.1.0'
|
|
||||||
api 'io.github.medyo:android-about-page:2.0.0'
|
|
||||||
api 'com.github.getActivity:ToastUtils:10.5'
|
|
||||||
api 'com.jcraft:jsch:0.1.55'
|
|
||||||
api 'org.jsoup:jsoup:1.13.1'
|
|
||||||
api 'com.squareup.okhttp3:okhttp:4.4.1'
|
|
||||||
|
|
||||||
api 'androidx.appcompat:appcompat:1.0.0'
|
|
||||||
api 'androidx.fragment:fragment:1.0.0'
|
|
||||||
api 'com.google.android.material:material:1.0.0'
|
|
||||||
|
|
||||||
api 'androidx.vectordrawable:vectordrawable-animated:1.0.0'
|
|
||||||
api 'androidx.lifecycle:lifecycle-livedata:1.0.0'
|
|
||||||
|
|
||||||
//api 'cc.winboll.studio:libaes:6.3.2'
|
|
||||||
//api 'cc.winboll.studio:libapputils:8.3.8'
|
|
||||||
|
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
|
|
||||||
|
// SSH
|
||||||
|
api 'com.jcraft:jsch:0.1.55'
|
||||||
|
// Html 解析
|
||||||
|
api 'org.jsoup:jsoup:1.13.1'
|
||||||
|
// 二维码类库
|
||||||
|
api 'com.google.zxing:core:3.4.1'
|
||||||
|
api 'com.journeyapps:zxing-android-embedded:3.6.0'
|
||||||
|
// 应用介绍页类库
|
||||||
|
api 'io.github.medyo:android-about-page:2.0.0'
|
||||||
|
// 吐司类库
|
||||||
|
api 'com.github.getActivity:ToastUtils:10.5'
|
||||||
|
// 网络连接类库
|
||||||
|
api 'com.squareup.okhttp3:okhttp:4.4.1'
|
||||||
|
// AndroidX 类库
|
||||||
|
api 'androidx.appcompat:appcompat:1.1.0'
|
||||||
|
api 'com.google.android.material:material:1.4.0'
|
||||||
|
//api 'androidx.viewpager:viewpager:1.0.0'
|
||||||
|
//api 'androidx.vectordrawable:vectordrawable:1.1.0'
|
||||||
|
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
|
||||||
|
//api 'androidx.fragment:fragment:1.1.0'
|
||||||
|
|
||||||
|
api 'cc.winboll.studio:libaes:15.2.5'
|
||||||
|
api 'cc.winboll.studio:libapputils:15.2.1'
|
||||||
|
api 'cc.winboll.studio:libappbase:15.2.2'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Thu Jan 02 02:39:56 HKT 2025
|
#Wed Apr 02 21:25:51 HKT 2025
|
||||||
stageCount=4
|
stageCount=1
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=5.0
|
baseVersion=15.2
|
||||||
publishVersion=5.0.3
|
publishVersion=15.2.0
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=5.0.4
|
baseBetaVersion=15.2.1
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
android:persistent="true"
|
android:persistent="true"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
android:theme="@style/Theme.Application">
|
android:theme="@style/MyAppTheme">
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
|
|||||||
@@ -6,21 +6,22 @@ package cc.winboll.studio.autoinstaller;
|
|||||||
* @Describe 全局应用类
|
* @Describe 全局应用类
|
||||||
*/
|
*/
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
|
import cc.winboll.studio.autoinstaller.R;
|
||||||
|
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
import cc.winboll.studio.shared.app.WinBollApplication;
|
|
||||||
|
|
||||||
public class App extends WinBollApplication {
|
public class App extends GlobalApplication {
|
||||||
|
|
||||||
public static final String TAG = "App";
|
public static final String TAG = "App";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
setIsDebug(BuildConfig.DEBUG);
|
|
||||||
// 初始化 Toast 框架
|
// 初始化 Toast 框架
|
||||||
ToastUtils.init(this);
|
ToastUtils.init(this);
|
||||||
// 设置 Toast 布局样式
|
// 设置 Toast 布局样式
|
||||||
ToastUtils.setView(R.layout.toast_custom_view);
|
ToastUtils.setView(R.layout.view_toast);
|
||||||
//ToastUtils.setStyle(new WhiteToastStyle());
|
//ToastUtils.setStyle(new WhiteToastStyle());
|
||||||
ToastUtils.setGravity(Gravity.BOTTOM, 0, 200);
|
ToastUtils.setGravity(Gravity.BOTTOM, 0, 200);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package cc.winboll.studio.autoinstaller;
|
package cc.winboll.studio.autoinstaller;
|
||||||
|
|
||||||
import android.os.FileObserver;
|
import android.os.FileObserver;
|
||||||
import cc.winboll.studio.shared.log.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
|
||||||
public class FileListener extends FileObserver {
|
public class FileListener extends FileObserver {
|
||||||
public final static String TAG = "FileListener";
|
public final static String TAG = "FileListener";
|
||||||
|
|||||||
@@ -12,15 +12,15 @@ import android.widget.RadioButton;
|
|||||||
import android.widget.SimpleAdapter;
|
import android.widget.SimpleAdapter;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
import android.widget.TextClock;
|
import android.widget.TextClock;
|
||||||
import android.widget.Toast;
|
|
||||||
import androidx.core.content.FileProvider;
|
import androidx.core.content.FileProvider;
|
||||||
import cc.winboll.studio.shared.log.LogUtils;
|
|
||||||
import cc.winboll.studio.shared.log.LogView;
|
|
||||||
import cc.winboll.studio.autoinstaller.MainActivity;
|
import cc.winboll.studio.autoinstaller.MainActivity;
|
||||||
import cc.winboll.studio.autoinstaller.beans.AppConfigs;
|
import cc.winboll.studio.autoinstaller.models.APKModel;
|
||||||
|
import cc.winboll.studio.autoinstaller.models.AppConfigs;
|
||||||
import cc.winboll.studio.autoinstaller.services.MainService;
|
import cc.winboll.studio.autoinstaller.services.MainService;
|
||||||
import cc.winboll.studio.autoinstaller.utils.NotificationUtil;
|
import cc.winboll.studio.autoinstaller.utils.NotificationUtil;
|
||||||
import cc.winboll.studio.autoinstaller.views.ListViewForScrollView;
|
import cc.winboll.studio.autoinstaller.views.ListViewForScrollView;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
import cc.winboll.studio.libappbase.LogView;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -32,6 +32,7 @@ public class MainActivity extends Activity {
|
|||||||
|
|
||||||
private static final int INSTALL_PERMISSION_CODE = 1;
|
private static final int INSTALL_PERMISSION_CODE = 1;
|
||||||
|
|
||||||
|
ArrayList<APKModel> _APKModelList = new ArrayList<APKModel>();
|
||||||
LogView mLogView;
|
LogView mLogView;
|
||||||
TextClock mTextClock;
|
TextClock mTextClock;
|
||||||
EditText mEditText;
|
EditText mEditText;
|
||||||
@@ -131,14 +132,24 @@ public class MainActivity extends Activity {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String getLastApkPackageName() {
|
||||||
|
APKModel.loadBeanList(this, _APKModelList, APKModel.class);
|
||||||
|
if (_APKModelList.size() > 0) {
|
||||||
|
return _APKModelList.get(_APKModelList.size() - 1).getApkPackageName();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public void onOpenAPP(View view) {
|
public void onOpenAPP(View view) {
|
||||||
if (mszInstalledPackageName.trim().equals("")) {
|
String szInstalledPackageName = getLastApkPackageName();
|
||||||
|
if (szInstalledPackageName.trim().equals("")) {
|
||||||
ToastUtils.show("Installed APP package name is null.");
|
ToastUtils.show("Installed APP package name is null.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Intent intent = getPackageManager().getLaunchIntentForPackage(mszInstalledPackageName);
|
Intent intent = getPackageManager().getLaunchIntentForPackage(mszInstalledPackageName);
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
|
//ToastUtils.show("startActivity");
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
} else {
|
} else {
|
||||||
// 若没能获取到启动意图,可进行相应提示等操作,比如跳转到应用商店让用户下载该应用(示例)
|
// 若没能获取到启动意图,可进行相应提示等操作,比如跳转到应用商店让用户下载该应用(示例)
|
||||||
@@ -195,7 +206,7 @@ public class MainActivity extends Activity {
|
|||||||
//
|
//
|
||||||
if (szFilePath.trim().equals("")) {
|
if (szFilePath.trim().equals("")) {
|
||||||
sw.setChecked(false);
|
sw.setChecked(false);
|
||||||
Toast.makeText(getApplication(), "监控路径为空。", Toast.LENGTH_SHORT).show();
|
ToastUtils.show("监控路径为空。");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,8 +262,6 @@ public class MainActivity extends Activity {
|
|||||||
Intent intentService = new Intent(MainActivity.this, MainService.class);
|
Intent intentService = new Intent(MainActivity.this, MainService.class);
|
||||||
//intentService.putExtra(MainService.EXTRA_APKFILEPATH, szAPKFilePath);
|
//intentService.putExtra(MainService.EXTRA_APKFILEPATH, szAPKFilePath);
|
||||||
startService(intentService);
|
startService(intentService);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
package cc.winboll.studio.autoinstaller.models;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen@AliYun.Com
|
||||||
|
* @Date 2025/04/02 20:50:29
|
||||||
|
* @Describe 监控的 APK 安装文件对应的应用信息数据模型
|
||||||
|
*/
|
||||||
|
import android.util.JsonReader;
|
||||||
|
import android.util.JsonWriter;
|
||||||
|
import cc.winboll.studio.libappbase.BaseBean;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class APKModel extends BaseBean {
|
||||||
|
|
||||||
|
public static final String TAG = "APPModel";
|
||||||
|
|
||||||
|
// 每次更新的 APK 文件对应的应用包名称
|
||||||
|
String apkPackageName;
|
||||||
|
|
||||||
|
public APKModel() {
|
||||||
|
this.apkPackageName = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public APKModel(String apkPackageName) {
|
||||||
|
this.apkPackageName = apkPackageName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setApkPackageName(String apkPackageName) {
|
||||||
|
this.apkPackageName = apkPackageName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getApkPackageName() {
|
||||||
|
return apkPackageName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return APKModel.class.getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException {
|
||||||
|
super.writeThisToJsonWriter(jsonWriter);
|
||||||
|
jsonWriter.name("appPackageName").value(getApkPackageName());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException {
|
||||||
|
if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else {
|
||||||
|
if (name.equals("appPackageName")) {
|
||||||
|
setApkPackageName(jsonReader.nextString());
|
||||||
|
} 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cc.winboll.studio.autoinstaller.beans;
|
package cc.winboll.studio.autoinstaller.models;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen@QQ.COM
|
* @Author ZhanGSKen@QQ.COM
|
||||||
@@ -8,13 +8,13 @@ package cc.winboll.studio.autoinstaller.beans;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.JsonReader;
|
import android.util.JsonReader;
|
||||||
import android.util.JsonWriter;
|
import android.util.JsonWriter;
|
||||||
import cc.winboll.studio.autoinstaller.beans.AppConfigs;
|
import cc.winboll.studio.autoinstaller.models.AppConfigs;
|
||||||
import cc.winboll.studio.autoinstaller.utils.FileUtil;
|
import cc.winboll.studio.autoinstaller.utils.FileUtil;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import cc.winboll.studio.shared.log.LogUtils;
|
|
||||||
|
|
||||||
public class AppConfigs implements Serializable {
|
public class AppConfigs implements Serializable {
|
||||||
|
|
||||||
@@ -4,9 +4,9 @@ import android.content.BroadcastReceiver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import cc.winboll.studio.autoinstaller.beans.AppConfigs;
|
import cc.winboll.studio.autoinstaller.models.AppConfigs;
|
||||||
import cc.winboll.studio.autoinstaller.services.MainService;
|
import cc.winboll.studio.autoinstaller.services.MainService;
|
||||||
import cc.winboll.studio.shared.log.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen@QQ.COM
|
* @Author ZhanGSKen@QQ.COM
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.ServiceConnection;
|
import android.content.ServiceConnection;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import cc.winboll.studio.autoinstaller.beans.AppConfigs;
|
import cc.winboll.studio.autoinstaller.models.AppConfigs;
|
||||||
import cc.winboll.studio.autoinstaller.utils.ServiceUtil;
|
import cc.winboll.studio.autoinstaller.utils.ServiceUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -12,23 +12,26 @@ import android.os.IBinder;
|
|||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import androidx.core.content.FileProvider;
|
import androidx.core.content.FileProvider;
|
||||||
import cc.winboll.studio.shared.log.LogUtils;
|
|
||||||
import cc.winboll.studio.autoinstaller.FileListener;
|
import cc.winboll.studio.autoinstaller.FileListener;
|
||||||
import cc.winboll.studio.autoinstaller.MainActivity;
|
import cc.winboll.studio.autoinstaller.MainActivity;
|
||||||
import cc.winboll.studio.autoinstaller.beans.AppConfigs;
|
import cc.winboll.studio.autoinstaller.models.APKModel;
|
||||||
|
import cc.winboll.studio.autoinstaller.models.AppConfigs;
|
||||||
import cc.winboll.studio.autoinstaller.services.AssistantService;
|
import cc.winboll.studio.autoinstaller.services.AssistantService;
|
||||||
import cc.winboll.studio.autoinstaller.services.MainService;
|
import cc.winboll.studio.autoinstaller.services.MainService;
|
||||||
import cc.winboll.studio.autoinstaller.utils.NotificationUtil;
|
import cc.winboll.studio.autoinstaller.utils.NotificationUtil;
|
||||||
import cc.winboll.studio.autoinstaller.utils.PackageUtil;
|
import cc.winboll.studio.autoinstaller.utils.PackageUtil;
|
||||||
import cc.winboll.studio.autoinstaller.utils.ServiceUtil;
|
import cc.winboll.studio.autoinstaller.utils.ServiceUtil;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class MainService extends Service {
|
public class MainService extends Service {
|
||||||
|
|
||||||
public static String TAG = "MainService";
|
public static String TAG = "MainService";
|
||||||
|
|
||||||
|
ArrayList<APKModel> _APKModelList = new ArrayList<APKModel>();
|
||||||
private static boolean _mIsServiceAlive;
|
private static boolean _mIsServiceAlive;
|
||||||
//String mszAPKFilePath;
|
//String mszAPKFilePath;
|
||||||
//String mszAPKFileName;
|
//String mszAPKFileName;
|
||||||
@@ -75,6 +78,7 @@ public class MainService extends Service {
|
|||||||
startWatchingFile(appConfigs.getWatchingFilePath());
|
startWatchingFile(appConfigs.getWatchingFilePath());
|
||||||
|
|
||||||
LogUtils.d(TAG, "running...");
|
LogUtils.d(TAG, "running...");
|
||||||
|
ToastUtils.show("running...");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
LogUtils.d(TAG, "_mIsServiceAlive is " + Boolean.toString(_mIsServiceAlive));
|
LogUtils.d(TAG, "_mIsServiceAlive is " + Boolean.toString(_mIsServiceAlive));
|
||||||
@@ -176,6 +180,9 @@ public class MainService extends Service {
|
|||||||
// 调用[应用信息查看器]打开应用包
|
// 调用[应用信息查看器]打开应用包
|
||||||
//
|
//
|
||||||
private void installAPK(String szAPKFilePath) {
|
private void installAPK(String szAPKFilePath) {
|
||||||
|
String szAPKPackageName = PackageUtil.getPackageNameFromApk(this, szAPKFilePath);
|
||||||
|
saveAPKInfo(szAPKPackageName);
|
||||||
|
|
||||||
long nTimeNow = System.currentTimeMillis();
|
long nTimeNow = System.currentTimeMillis();
|
||||||
/*SimpleDateFormat dateFormat = new SimpleDateFormat(
|
/*SimpleDateFormat dateFormat = new SimpleDateFormat(
|
||||||
"yyyy-MM-dd HH:mm:ss", Locale.getDefault());
|
"yyyy-MM-dd HH:mm:ss", Locale.getDefault());
|
||||||
@@ -210,15 +217,24 @@ public class MainService extends Service {
|
|||||||
//
|
//
|
||||||
void installAPK2(String szAPKFilePath) {
|
void installAPK2(String szAPKFilePath) {
|
||||||
LogUtils.d(TAG, "installAPK2()");
|
LogUtils.d(TAG, "installAPK2()");
|
||||||
|
String szAPKPackageName = PackageUtil.getPackageNameFromApk(this, szAPKFilePath);
|
||||||
|
saveAPKInfo(szAPKPackageName);
|
||||||
|
|
||||||
Intent intent = new Intent(this, MainActivity.class);
|
Intent intent = new Intent(this, MainActivity.class);
|
||||||
intent.setAction(MainActivity.ACTION_NEW_INSTALLTASK);
|
intent.setAction(MainActivity.ACTION_NEW_INSTALLTASK);
|
||||||
intent.putExtra(MainActivity.EXTRA_INSTALLED_PACKAGENAME, PackageUtil.getPackageNameFromApk(this, szAPKFilePath));
|
intent.putExtra(MainActivity.EXTRA_INSTALLED_PACKAGENAME, szAPKPackageName);
|
||||||
intent.putExtra(MainActivity.EXTRA_INSTALLED_APKFILEPATH, szAPKFilePath);
|
intent.putExtra(MainActivity.EXTRA_INSTALLED_APKFILEPATH, szAPKFilePath);
|
||||||
// Intent.ACTION_VIEW);
|
// Intent.ACTION_VIEW);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
this.startActivity(intent);
|
this.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void saveAPKInfo(String szApkPackageName) {
|
||||||
|
APKModel.loadBeanList(this, _APKModelList, APKModel.class);
|
||||||
|
_APKModelList.add(new APKModel(szApkPackageName));
|
||||||
|
APKModel.saveBeanList(this, _APKModelList, APKModel.class);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
static class MyHandler extends Handler {
|
static class MyHandler extends Handler {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ package cc.winboll.studio.autoinstaller.utils;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import cc.winboll.studio.shared.log.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
|
||||||
public class PackageUtil {
|
public class PackageUtil {
|
||||||
|
|
||||||
|
|||||||
@@ -132,7 +132,7 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<cc.winboll.studio.shared.log.LogView
|
<cc.winboll.studio.libappbase.LogView
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="200dp"
|
android:layout_height="200dp"
|
||||||
|
|||||||
13
autoinstaller/src/main/res/values/styles.xml
Normal file
13
autoinstaller/src/main/res/values/styles.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
<style name="MyAppTheme" parent="APPBaseTheme">
|
||||||
|
<item name="attrColorPrimary">@color/colorPrimary</item>
|
||||||
|
<item name="themeGlobalCrashActivity">@style/MyGlobalCrashActivityTheme</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="MyGlobalCrashActivityTheme" parent="GlobalCrashActivityTheme">
|
||||||
|
<item name="colorTittle">#FFFFFFFF</item>
|
||||||
|
<item name="colorTittleBackgound">#FF00A4B3</item>
|
||||||
|
<item name="colorText">#FFFFFFFF</item>
|
||||||
|
<item name="colorTextBackgound">#FF000000</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
|
||||||
<!-- Base application theme. -->
|
|
||||||
<style name="Theme.Application" parent="android:Theme.Material.Light.DarkActionBar">
|
|
||||||
<!-- Primary brand color. -->
|
|
||||||
<item name="android:colorPrimary">@color/purple_500</item>
|
|
||||||
|
|
||||||
<!-- Secondary brand color. -->
|
|
||||||
<item name="android:colorSecondary">@color/teal_200</item>
|
|
||||||
|
|
||||||
<!-- Status bar color. -->
|
|
||||||
<item name="android:statusBarColor" tools:targetApi="l">@color/purple_700</item>
|
|
||||||
<!-- Customize your theme here. -->
|
|
||||||
</style>
|
|
||||||
</resources>
|
|
||||||
Reference in New Issue
Block a user