Compare commits
14 Commits
apputils-v
...
apputils-v
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
69e7e72ed8 | ||
|
|
a96ba362b4 | ||
|
|
6447bcf924 | ||
|
|
18ed325731 | ||
|
|
16e3d10b63 | ||
|
|
8b0e8b00ae | ||
|
|
7f61ff1470 | ||
|
|
c4e0c23a0c | ||
|
|
c7d26bbc3d | ||
|
|
4968bbaeae | ||
|
|
8e6b06e366 | ||
|
|
ae7fb2984a | ||
|
|
a4d009f8fb | ||
|
|
5a549e9652 |
@@ -50,6 +50,8 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api project(':libapputils')
|
api project(':libapputils')
|
||||||
api 'cc.winboll.studio:libappbase:1.0.3'
|
|
||||||
|
api 'cc.winboll.studio:libappbase:1.1.0'
|
||||||
|
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Wed Jan 22 17:19:38 HKT 2025
|
#Thu Jan 23 02:17:32 HKT 2025
|
||||||
stageCount=3
|
stageCount=8
|
||||||
libraryProject=libapputils
|
libraryProject=libapputils
|
||||||
baseVersion=9.2
|
baseVersion=9.2
|
||||||
publishVersion=9.2.2
|
publishVersion=9.2.7
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=9.2.3
|
baseBetaVersion=9.2.8
|
||||||
|
|||||||
@@ -5,22 +5,25 @@ package cc.winboll.studio.apputils;
|
|||||||
* @Date 2024/12/08 15:10:51
|
* @Date 2024/12/08 15:10:51
|
||||||
* @Describe 全局应用类
|
* @Describe 全局应用类
|
||||||
*/
|
*/
|
||||||
|
import android.app.Application;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import cc.winboll.studio.libapputils.app.WinBollApplication;
|
import cc.winboll.studio.GlobalApplication;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
import com.hjq.toast.style.WhiteToastStyle;
|
import com.hjq.toast.style.WhiteToastStyle;
|
||||||
|
import cc.winboll.studio.libapputils.app.WinBollUtils;
|
||||||
|
|
||||||
public class App extends WinBollApplication {
|
public class App extends GlobalApplication {
|
||||||
|
|
||||||
public static final String TAG = "App";
|
public static final String TAG = "App";
|
||||||
|
|
||||||
public static final String _ACTION_DEBUGVIEW = WinBollApplication.class.getName() + "_ACTION_DEBUGVIEW";
|
public static final String _ACTION_DEBUGVIEW = App.class.getName() + "_ACTION_DEBUGVIEW";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
// 初始化 WinBoll 框架
|
||||||
|
WinBollUtils.init(this);
|
||||||
// 初始化 Toast 框架
|
// 初始化 Toast 框架
|
||||||
//
|
|
||||||
ToastUtils.init(this);
|
ToastUtils.init(this);
|
||||||
// 设置 Toast 布局样式
|
// 设置 Toast 布局样式
|
||||||
//ToastUtils.setView(R.layout.view_toast);
|
//ToastUtils.setView(R.layout.view_toast);
|
||||||
|
|||||||
@@ -160,18 +160,34 @@ final public class MainActivity extends WinBollActivity {
|
|||||||
} else if (item.getItemId() == R.id.item_testqrcodedecodeactivity) {
|
} else if (item.getItemId() == R.id.item_testqrcodedecodeactivity) {
|
||||||
Intent intent = new Intent(this, QRCodeDecodeActivity.class);
|
Intent intent = new Intent(this, QRCodeDecodeActivity.class);
|
||||||
startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY);
|
startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY);
|
||||||
|
} else if(item.getItemId() == R.id.item_about) {
|
||||||
|
openAboutActivity();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTestAboutActivity(View view) {
|
void openAboutActivity() {
|
||||||
Intent intent = new Intent(this, AboutActivity.class);
|
Intent intent = new Intent(this, AboutActivity.class);
|
||||||
APPInfo appInfo = new APPInfo();
|
APPInfo appInfo = new APPInfo();
|
||||||
|
appInfo.setAppName("APPUtils");
|
||||||
appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
|
appInfo.setAppIcon(cc.winboll.studio.libapputils.R.drawable.ic_winboll);
|
||||||
appInfo.setAppName("Test APP");
|
appInfo.setAppDescription("APPUtils Description");
|
||||||
|
appInfo.setAppGitName("APP");
|
||||||
|
appInfo.setAppGitAPPBranch("apputils");
|
||||||
|
appInfo.setAppGitAPPSubProjectFolder("apputils");
|
||||||
|
appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=APP");
|
||||||
|
appInfo.setAppAPKName("APPUtils");
|
||||||
|
appInfo.setAppAPKFolderName("APPUtils");
|
||||||
intent.putExtra(AboutActivity.EXTRA_APPINFO, appInfo);
|
intent.putExtra(AboutActivity.EXTRA_APPINFO, appInfo);
|
||||||
WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, AboutActivity.class);
|
WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, AboutActivity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onTestAboutActivity(View view) {
|
||||||
|
//ToastUtils.show("onTestAboutActivity");
|
||||||
|
openAboutActivity();
|
||||||
|
}
|
||||||
|
|
||||||
public void onTestJavascriptHtmlActivity(View view) {
|
public void onTestJavascriptHtmlActivity(View view) {
|
||||||
Intent intent = new Intent(this, AssetsHtmlActivity.class);
|
Intent intent = new Intent(this, AssetsHtmlActivity.class);
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ dependencies {
|
|||||||
api 'androidx.fragment:fragment:1.0.0'
|
api 'androidx.fragment:fragment:1.0.0'
|
||||||
api 'com.google.android.material:material:1.0.0'
|
api 'com.google.android.material:material:1.0.0'
|
||||||
|
|
||||||
api 'cc.winboll.studio:libappbase:1.0.3'
|
api 'cc.winboll.studio:libappbase:1.1.0'
|
||||||
|
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Wed Jan 22 17:19:38 HKT 2025
|
#Thu Jan 23 02:17:32 HKT 2025
|
||||||
stageCount=3
|
stageCount=8
|
||||||
libraryProject=libapputils
|
libraryProject=libapputils
|
||||||
baseVersion=9.2
|
baseVersion=9.2
|
||||||
publishVersion=9.2.2
|
publishVersion=9.2.7
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=9.2.3
|
baseBetaVersion=9.2.8
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
<!-- 拍摄照片和视频 -->
|
<!-- 拍摄照片和视频 -->
|
||||||
<uses-permission android:name="android.permission.CAMERA"/>
|
<uses-permission android:name="android.permission.CAMERA"/>
|
||||||
|
|
||||||
|
<!-- 拥有完全的网络访问权限 -->
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
|
||||||
<application android:networkSecurityConfig="@xml/network_security_config">
|
<application android:networkSecurityConfig="@xml/network_security_config">
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
@@ -45,4 +48,4 @@
|
|||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class AssetsHtmlActivity extends WinBollActivity {
|
|||||||
if (szTemp != null && !szTemp.trim().equals("")) {
|
if (szTemp != null && !szTemp.trim().equals("")) {
|
||||||
mszHtmlFileName = szTemp.trim();
|
mszHtmlFileName = szTemp.trim();
|
||||||
}
|
}
|
||||||
ToastUtils.show(mszHtmlFileName);
|
//ToastUtils.show(mszHtmlFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 与其他应用分享 html 帮助
|
// 与其他应用分享 html 帮助
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ package cc.winboll.studio.libapputils.app;
|
|||||||
* @Date 2024/08/12 14:45:35
|
* @Date 2024/08/12 14:45:35
|
||||||
* @Describe 应用版本工具集
|
* @Describe 应用版本工具集
|
||||||
*/
|
*/
|
||||||
import com.hjq.toast.ToastUtils;
|
import cc.winboll.studio.libapputils.log.LogUtils;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@@ -23,6 +23,7 @@ public class AppVersionUtils {
|
|||||||
// true 新版本 == 当前版本
|
// true 新版本 == 当前版本
|
||||||
//
|
//
|
||||||
public static boolean isHasNewVersion2(String szCurrentName, String szNextName) {
|
public static boolean isHasNewVersion2(String szCurrentName, String szNextName) {
|
||||||
|
LogUtils.d(TAG, String.format("isHasNewVersion2\nszCurrentName : %s\nszNextName : %s", szCurrentName, szNextName));
|
||||||
//szCurrentName = "AES_6.2.0-beta0_3234.apk";
|
//szCurrentName = "AES_6.2.0-beta0_3234.apk";
|
||||||
//szNextName = "AES_6.1.12.apk";
|
//szNextName = "AES_6.1.12.apk";
|
||||||
//szCurrentName = "AES_6.2.0-beta0_3234.apk";
|
//szCurrentName = "AES_6.2.0-beta0_3234.apk";
|
||||||
@@ -77,8 +78,9 @@ public class AppVersionUtils {
|
|||||||
//LogUtils.d(TAG, "App version is the newest. ");
|
//LogUtils.d(TAG, "App version is the newest. ");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isHasNewStageReleaseVersion(String szCurrentName, String szNextName) {
|
public static boolean isHasNewStageReleaseVersion(String szCurrentName, String szNextName) {
|
||||||
|
LogUtils.d(TAG, String.format("isHasNewStageReleaseVersion\nszCurrentName : %s\nszNextName : %s", szCurrentName, szNextName));
|
||||||
//szCurrentName = "AES_6.2.12.apk";
|
//szCurrentName = "AES_6.2.12.apk";
|
||||||
//szNextName = "AES_6.3.12.apk";
|
//szNextName = "AES_6.3.12.apk";
|
||||||
if (checkNewVersion(getCodeInPackageName(szCurrentName), getCodeInPackageName(szNextName))) {
|
if (checkNewVersion(getCodeInPackageName(szCurrentName), getCodeInPackageName(szNextName))) {
|
||||||
@@ -96,6 +98,10 @@ public class AppVersionUtils {
|
|||||||
// 返回 :true 新版本 > 当前版本
|
// 返回 :true 新版本 > 当前版本
|
||||||
//
|
//
|
||||||
public static Boolean checkNewVersion(String szCurrentCode, String szNextCode) {
|
public static Boolean checkNewVersion(String szCurrentCode, String szNextCode) {
|
||||||
|
if (szCurrentCode == null || szCurrentCode.equals("") || szNextCode == null || szNextCode.equals("")) {
|
||||||
|
LogUtils.d(TAG, String.format("checkNewVersion unexpected parameters:\nszCurrentCode : %s\nszNextCode : %s", szCurrentCode, szNextCode));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
boolean isNew = false;
|
boolean isNew = false;
|
||||||
String[] appVersionCurrent = szCurrentCode.split("\\.");
|
String[] appVersionCurrent = szCurrentCode.split("\\.");
|
||||||
String[] appVersionNext = szNextCode.split("\\.");
|
String[] appVersionNext = szNextCode.split("\\.");
|
||||||
@@ -106,7 +112,7 @@ public class AppVersionUtils {
|
|||||||
if (Integer.parseInt(appVersionNext[i]) > Integer.parseInt(appVersionCurrent[i])) {
|
if (Integer.parseInt(appVersionNext[i]) > Integer.parseInt(appVersionCurrent[i])) {
|
||||||
isNew = true;
|
isNew = true;
|
||||||
return isNew;
|
return isNew;
|
||||||
} else if(Integer.parseInt(appVersionNext[i]) == Integer.parseInt(appVersionCurrent[i])) {
|
} else if (Integer.parseInt(appVersionNext[i]) == Integer.parseInt(appVersionCurrent[i])) {
|
||||||
continue ;
|
continue ;
|
||||||
} else {
|
} else {
|
||||||
isNew = false;
|
isNew = false;
|
||||||
@@ -122,14 +128,17 @@ public class AppVersionUtils {
|
|||||||
// 如 :AppUtils_7.0.4.apk 版本号为 7.0.4
|
// 如 :AppUtils_7.0.4.apk 版本号为 7.0.4
|
||||||
//
|
//
|
||||||
public static String getCodeInPackageName(String apkName) {
|
public static String getCodeInPackageName(String apkName) {
|
||||||
|
LogUtils.d(TAG, String.format("getCodeInPackageName apkName : %s", apkName));
|
||||||
//String apkName = "AppUtils_7.0.0.apk";
|
//String apkName = "AppUtils_7.0.0.apk";
|
||||||
Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+");
|
Pattern pattern = Pattern.compile("\\d+\\.\\d+\\.\\d+");
|
||||||
Matcher matcher = pattern.matcher(apkName);
|
Matcher matcher = pattern.matcher(apkName);
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
String version = matcher.group();
|
String version = matcher.group();
|
||||||
|
LogUtils.d(TAG, String.format("version is %s", version));
|
||||||
return version;
|
return version;
|
||||||
//System.out.println("Version number: " + version); // 输出:7.0.0
|
//System.out.println("Version number: " + version); // 输出:7.0.0
|
||||||
}
|
}
|
||||||
|
LogUtils.d(TAG, String.format("No result."));
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,5 +158,4 @@ public class AppVersionUtils {
|
|||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,22 +6,23 @@ package cc.winboll.studio.libapputils.app;
|
|||||||
*/
|
*/
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import cc.winboll.studio.GlobalApplication;
|
||||||
import cc.winboll.studio.libapputils.log.LogUtils;
|
import cc.winboll.studio.libapputils.log.LogUtils;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
import java.util.Set;
|
import android.content.Context;
|
||||||
|
|
||||||
public class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
|
public class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
|
||||||
|
|
||||||
public static final String TAG = "MyActivityLifecycleCallbacks";
|
public static final String TAG = "MyActivityLifecycleCallbacks";
|
||||||
|
|
||||||
|
Application mApplication;
|
||||||
|
|
||||||
public String mInfo = "";
|
public String mInfo = "";
|
||||||
|
|
||||||
public MyActivityLifecycleCallbacks(WinBollApplication application) {
|
public MyActivityLifecycleCallbacks(Application application) {
|
||||||
|
mApplication = application;
|
||||||
}
|
}
|
||||||
|
|
||||||
void createActivityeInfo(Activity activity) {
|
void createActivityeInfo(Activity activity) {
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ abstract public class WinBollActivity extends AppCompatActivity {
|
|||||||
// 传入的Intent action在Activity清单的intent-filter的action节点里有定义
|
// 传入的Intent action在Activity清单的intent-filter的action节点里有定义
|
||||||
if (intent.getAction() != null) {
|
if (intent.getAction() != null) {
|
||||||
if (intent.getAction().equals(cc.winboll.studio.libapputils.intent.action.DEBUGVIEW)) {
|
if (intent.getAction().equals(cc.winboll.studio.libapputils.intent.action.DEBUGVIEW)) {
|
||||||
WinBollApplication.setIsDebug(true);
|
WinBollUtils.setIsDebug(true);
|
||||||
//ToastUtils.show!("WinBollApplication.setIsDebug(true) by action : " + intent.getAction());
|
//ToastUtils.show!("WinBollApplication.setIsDebug(true) by action : " + intent.getAction());
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -356,7 +356,7 @@ abstract public class WinBollActivity extends AppCompatActivity {
|
|||||||
if (isAddWinBollToolBar()) {
|
if (isAddWinBollToolBar()) {
|
||||||
getMenuInflater().inflate(R.menu.toolbar_winboll_shared_main, menu);
|
getMenuInflater().inflate(R.menu.toolbar_winboll_shared_main, menu);
|
||||||
}
|
}
|
||||||
if (WinBollApplication.isDebug()) {
|
if (WinBollUtils.isDebug()) {
|
||||||
getMenuInflater().inflate(R.menu.toolbar_studio_debug, menu);
|
getMenuInflater().inflate(R.menu.toolbar_studio_debug, menu);
|
||||||
}
|
}
|
||||||
return super.onCreateOptionsMenu(menu);
|
return super.onCreateOptionsMenu(menu);
|
||||||
@@ -378,8 +378,9 @@ abstract public class WinBollActivity extends AppCompatActivity {
|
|||||||
//ToastUtils.show("item_exit");
|
//ToastUtils.show("item_exit");
|
||||||
WinBollActivityManager.getInstance(this).finishAll();
|
WinBollActivityManager.getInstance(this).finishAll();
|
||||||
} else if (item.getItemId() == R.id.item_info) {
|
} else if (item.getItemId() == R.id.item_info) {
|
||||||
WinBollApplication application = (WinBollApplication) getApplication();
|
LogUtils.d(TAG, "item_info not yet.");
|
||||||
application.getMyActivityLifecycleCallbacks().showActivityeInfo();
|
//WinBollApplication application = (WinBollApplication) getApplication();
|
||||||
|
//application.getMyActivityLifecycleCallbacks().showActivityeInfo();
|
||||||
} else if (item.getItemId() == R.id.item_exitdebug) {
|
} else if (item.getItemId() == R.id.item_exitdebug) {
|
||||||
AboutView.setApp2NormalMode(getApplicationContext());
|
AboutView.setApp2NormalMode(getApplicationContext());
|
||||||
} else if (item.getItemId() == R.id.item_about) {
|
} else if (item.getItemId() == R.id.item_about) {
|
||||||
|
|||||||
@@ -171,11 +171,11 @@ public class WinBollActivityManager {
|
|||||||
//ToastUtils.show("finishAll() activity");
|
//ToastUtils.show("finishAll() activity");
|
||||||
if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) {
|
if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) {
|
||||||
//ToastUtils.show("activity != null ...");
|
//ToastUtils.show("activity != null ...");
|
||||||
if (WinBollApplication.getWinBollUI_TYPE() == WinBollApplication.WinBollUI_TYPE.Service) {
|
if (WinBollUtils.getWinBollUI_TYPE() == WinBollUtils.WinBollUI_TYPE.Service) {
|
||||||
// 结束窗口和最近任务栏, 建议前台服务类应用使用,可以方便用户再次调用 UI 操作。
|
// 结束窗口和最近任务栏, 建议前台服务类应用使用,可以方便用户再次调用 UI 操作。
|
||||||
activity.finishAndRemoveTask();
|
activity.finishAndRemoveTask();
|
||||||
//ToastUtils.show("finishAll() activity.finishAndRemoveTask();");
|
//ToastUtils.show("finishAll() activity.finishAndRemoveTask();");
|
||||||
} else if (WinBollApplication.getWinBollUI_TYPE() == WinBollApplication.WinBollUI_TYPE.Aplication) {
|
} else if (WinBollUtils.getWinBollUI_TYPE() == WinBollUtils.WinBollUI_TYPE.Aplication) {
|
||||||
// 结束窗口保留最近任务栏,建议前台服务类应用使用,可以保持应用的系统自觉性。
|
// 结束窗口保留最近任务栏,建议前台服务类应用使用,可以保持应用的系统自觉性。
|
||||||
activity.finish();
|
activity.finish();
|
||||||
//ToastUtils.show("finishAll() activity.finish();");
|
//ToastUtils.show("finishAll() activity.finish();");
|
||||||
|
|||||||
@@ -1,11 +1,32 @@
|
|||||||
package cc.winboll.studio.libapputils.app;
|
package cc.winboll.studio.libapputils.app;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.view.Gravity;
|
||||||
import cc.winboll.studio.libapputils.bean.DebugBean;
|
import cc.winboll.studio.libapputils.bean.DebugBean;
|
||||||
import cc.winboll.studio.libapputils.log.LogUtils;
|
import cc.winboll.studio.libapputils.log.LogUtils;
|
||||||
|
import com.hjq.toast.ToastUtils;
|
||||||
|
import com.hjq.toast.style.WhiteToastStyle;
|
||||||
|
import cc.winboll.studio.GlobalApplication;
|
||||||
|
|
||||||
public class WinBollApplication extends cc.winboll.studio.libappbase.GlobalApplication {
|
public class WinBollUtils {
|
||||||
|
|
||||||
public static final String TAG = "WinBollApplication";
|
public static final String TAG = "WinBollUtils";
|
||||||
|
|
||||||
|
//
|
||||||
|
// 单件结构模块
|
||||||
|
//
|
||||||
|
static volatile WinBollUtils _WinBollUtils;
|
||||||
|
Application mApplication;
|
||||||
|
WinBollUtils(Application application) {
|
||||||
|
mApplication = application;
|
||||||
|
}
|
||||||
|
static synchronized WinBollUtils getInstance(Application application) {
|
||||||
|
if (_WinBollUtils == null) {
|
||||||
|
_WinBollUtils = new WinBollUtils(application);
|
||||||
|
}
|
||||||
|
return _WinBollUtils;
|
||||||
|
}
|
||||||
|
|
||||||
public static enum WinBollUI_TYPE {
|
public static enum WinBollUI_TYPE {
|
||||||
Aplication, // 退出应用后,保持最近任务栏任务记录主窗口
|
Aplication, // 退出应用后,保持最近任务栏任务记录主窗口
|
||||||
@@ -15,14 +36,14 @@ public class WinBollApplication extends cc.winboll.studio.libappbase.GlobalAppli
|
|||||||
// 应用类型标志
|
// 应用类型标志
|
||||||
volatile static WinBollUI_TYPE _mWinBollUI_TYPE = WinBollUI_TYPE.Service;
|
volatile static WinBollUI_TYPE _mWinBollUI_TYPE = WinBollUI_TYPE.Service;
|
||||||
|
|
||||||
static volatile WinBollApplication _WinBollApplication = null;
|
//static volatile WinBollApplication _WinBollApplication = null;
|
||||||
MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks;
|
MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks;
|
||||||
|
|
||||||
// 标记当前应用是否处于调试状态
|
// 标记当前应用是否处于调试状态
|
||||||
static volatile boolean isDebug = false;
|
static volatile boolean isDebug = false;
|
||||||
|
|
||||||
public static void setIsDebug(boolean isDebug) {
|
public static void setIsDebug(boolean isDebug) {
|
||||||
WinBollApplication.isDebug = isDebug;
|
WinBollUtils.isDebug = isDebug;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isDebug() {
|
public static boolean isDebug() {
|
||||||
@@ -39,7 +60,7 @@ public class WinBollApplication extends cc.winboll.studio.libappbase.GlobalAppli
|
|||||||
//
|
//
|
||||||
// 获取 WinBoll 应用 UI 类型
|
// 获取 WinBoll 应用 UI 类型
|
||||||
//
|
//
|
||||||
public static WinBollUI_TYPE getWinBollUI_TYPE() {
|
public synchronized static WinBollUI_TYPE getWinBollUI_TYPE() {
|
||||||
return _mWinBollUI_TYPE;
|
return _mWinBollUI_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,16 +68,14 @@ public class WinBollApplication extends cc.winboll.studio.libappbase.GlobalAppli
|
|||||||
return mMyActivityLifecycleCallbacks;
|
return mMyActivityLifecycleCallbacks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static void init(Application application) {
|
||||||
public void onCreate() {
|
WinBollUtils winBollUtils = WinBollUtils.getInstance(application);
|
||||||
super.onCreate();
|
|
||||||
_WinBollApplication = this;
|
|
||||||
// 应用环境初始化, 基本调试环境
|
// 应用环境初始化, 基本调试环境
|
||||||
//
|
//
|
||||||
CrashHandler.init(this);
|
// 初始化日志模块
|
||||||
LogUtils.init(this);
|
LogUtils.init(application);
|
||||||
|
// 设置应用调试标志
|
||||||
DebugBean debugBean = DebugBean.loadBean(this, DebugBean.class);
|
DebugBean debugBean = DebugBean.loadBean(application, DebugBean.class);
|
||||||
if (debugBean == null) {
|
if (debugBean == null) {
|
||||||
//ToastUtils.show("debugBean == null");
|
//ToastUtils.show("debugBean == null");
|
||||||
setIsDebug(false);
|
setIsDebug(false);
|
||||||
@@ -64,11 +83,10 @@ public class WinBollApplication extends cc.winboll.studio.libappbase.GlobalAppli
|
|||||||
//ToastUtils.show("saveDebugStatus(" + String.valueOf(debugBean.isDebuging()) + ")");
|
//ToastUtils.show("saveDebugStatus(" + String.valueOf(debugBean.isDebuging()) + ")");
|
||||||
setIsDebug(debugBean.isDebuging());
|
setIsDebug(debugBean.isDebuging());
|
||||||
}
|
}
|
||||||
|
// 应用窗口管理模块参数设置
|
||||||
// 应用运行状态环境设置
|
|
||||||
//
|
//
|
||||||
mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks(this);
|
winBollUtils.mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks(application);
|
||||||
registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
|
application.registerActivityLifecycleCallbacks(winBollUtils.mMyActivityLifecycleCallbacks);
|
||||||
// 设置默认 WinBoll 应用 UI 类型
|
// 设置默认 WinBoll 应用 UI 类型
|
||||||
setWinBollUI_TYPE(WinBollUI_TYPE.Service);
|
setWinBollUI_TYPE(WinBollUI_TYPE.Service);
|
||||||
//ToastUtils.show("WinBollUI_TYPE " + getWinBollUI_TYPE());
|
//ToastUtils.show("WinBollUI_TYPE " + getWinBollUI_TYPE());
|
||||||
@@ -20,6 +20,10 @@ public class APPInfo implements Serializable {
|
|||||||
String appDescription;
|
String appDescription;
|
||||||
// 应用Git仓库地址
|
// 应用Git仓库地址
|
||||||
String appGitName;
|
String appGitName;
|
||||||
|
// 应用Git仓库分支
|
||||||
|
String appGitAPPBranch;
|
||||||
|
// 应用Git仓库子项目文件夹
|
||||||
|
String appGitAPPSubProjectFolder;
|
||||||
// 应用主页
|
// 应用主页
|
||||||
String appHomePage;
|
String appHomePage;
|
||||||
// 应用包名称
|
// 应用包名称
|
||||||
@@ -27,27 +31,46 @@ public class APPInfo implements Serializable {
|
|||||||
// 应用包存储文件夹名称
|
// 应用包存储文件夹名称
|
||||||
String appAPKFolderName;
|
String appAPKFolderName;
|
||||||
|
|
||||||
public APPInfo(String appName, int appIcon, String appDescription, String appGitName, String appHomePage, String appAPKName, String appAPKFolderName) {
|
public APPInfo(String appName, int appIcon, String appDescription, String appGitName, String appGitAPPBranch, String appGitAPPSubProjectFolder, String appHomePage, String appAPKName, String appAPKFolderName) {
|
||||||
this.appName = appName;
|
this.appName = appName;
|
||||||
this.appIcon = appIcon;
|
this.appIcon = appIcon;
|
||||||
this.appDescription = appDescription;
|
this.appDescription = appDescription;
|
||||||
this.appGitName = appGitName;
|
this.appGitName = appGitName;
|
||||||
|
this.appGitAPPBranch = appGitAPPBranch;
|
||||||
|
this.appGitAPPSubProjectFolder = appGitAPPSubProjectFolder;
|
||||||
this.appHomePage = appHomePage;
|
this.appHomePage = appHomePage;
|
||||||
this.appAPKName = appAPKName;
|
this.appAPKName = appAPKName;
|
||||||
this.appAPKFolderName = appAPKFolderName;
|
this.appAPKFolderName = appAPKFolderName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public APPInfo() {
|
public APPInfo() {
|
||||||
this.appName = "WinBoll-APP";
|
this.appName = "WinBoll-APP";
|
||||||
this.appIcon = R.drawable.ic_launcher;
|
this.appIcon = R.drawable.ic_launcher;
|
||||||
this.appDescription = "WinBoll APP";
|
this.appDescription = "WinBoll APP";
|
||||||
this.appGitName = "APP";
|
this.appGitName = "APP";
|
||||||
|
this.appGitAPPBranch = "app";
|
||||||
|
this.appGitAPPSubProjectFolder = "app";
|
||||||
this.appHomePage = "https://www.winboll.cc/studio/details.php?app=APP";
|
this.appHomePage = "https://www.winboll.cc/studio/details.php?app=APP";
|
||||||
this.appAPKName = "APP";
|
this.appAPKName = "APP";
|
||||||
this.appAPKFolderName = "APP";
|
this.appAPKFolderName = "APP";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAppGitAPPBranch(String appGitAPPBranch) {
|
||||||
|
this.appGitAPPBranch = appGitAPPBranch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppGitAPPBranch() {
|
||||||
|
return appGitAPPBranch;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppGitAPPSubProjectFolder(String appGitAPPSubProjectFolder) {
|
||||||
|
this.appGitAPPSubProjectFolder = appGitAPPSubProjectFolder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppGitAPPSubProjectFolder() {
|
||||||
|
return appGitAPPSubProjectFolder;
|
||||||
|
}
|
||||||
|
|
||||||
public void setAppIcon(int appIcon) {
|
public void setAppIcon(int appIcon) {
|
||||||
this.appIcon = appIcon;
|
this.appIcon = appIcon;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import android.os.Bundle;
|
|||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import cc.winboll.studio.libapputils.R;
|
import cc.winboll.studio.libapputils.R;
|
||||||
import cc.winboll.studio.libapputils.app.WinBollActivity;
|
import cc.winboll.studio.libapputils.app.WinBollActivity;
|
||||||
import cc.winboll.studio.libapputils.app.WinBollApplication;
|
import cc.winboll.studio.libapputils.app.WinBollUtils;
|
||||||
|
|
||||||
public class LogActivity extends WinBollActivity {
|
public class LogActivity extends WinBollActivity {
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ public class LogActivity extends WinBollActivity {
|
|||||||
setContentView(R.layout.activity_log);
|
setContentView(R.layout.activity_log);
|
||||||
mLogView = findViewById(R.id.logview);
|
mLogView = findViewById(R.id.logview);
|
||||||
|
|
||||||
if (WinBollApplication.isDebug()) { mLogView.start(); }
|
if (WinBollUtils.isDebug()) { mLogView.start(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package cc.winboll.studio.libapputils.log;
|
|||||||
* @Describe 应用日志类
|
* @Describe 应用日志类
|
||||||
*/
|
*/
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import cc.winboll.studio.libapputils.app.WinBollApplication;
|
import cc.winboll.studio.libapputils.app.WinBollUtils;
|
||||||
import cc.winboll.studio.libapputils.util.FileUtils;
|
import cc.winboll.studio.libapputils.util.FileUtils;
|
||||||
import dalvik.system.DexFile;
|
import dalvik.system.DexFile;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@@ -61,7 +61,7 @@ public class LogUtils {
|
|||||||
// 初始化函数
|
// 初始化函数
|
||||||
//
|
//
|
||||||
public static void init(Context context, LOG_LEVEL logLevel) {
|
public static void init(Context context, LOG_LEVEL logLevel) {
|
||||||
if (WinBollApplication.isDebug()) {
|
if (WinBollUtils.isDebug()) {
|
||||||
// 初始化日志缓存文件路径
|
// 初始化日志缓存文件路径
|
||||||
_mfLogCacheDir = new File(context.getApplicationContext().getExternalCacheDir(), TAG);
|
_mfLogCacheDir = new File(context.getApplicationContext().getExternalCacheDir(), TAG);
|
||||||
if (!_mfLogCacheDir.exists()) {
|
if (!_mfLogCacheDir.exists()) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import android.widget.LinearLayout;
|
|||||||
import cc.winboll.studio.libapputils.R;
|
import cc.winboll.studio.libapputils.R;
|
||||||
import cc.winboll.studio.libapputils.app.AppVersionUtils;
|
import cc.winboll.studio.libapputils.app.AppVersionUtils;
|
||||||
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
|
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
|
||||||
import cc.winboll.studio.libapputils.app.WinBollApplication;
|
import cc.winboll.studio.libapputils.app.WinBollUtils;
|
||||||
import cc.winboll.studio.libapputils.bean.APPInfo;
|
import cc.winboll.studio.libapputils.bean.APPInfo;
|
||||||
import cc.winboll.studio.libapputils.bean.DebugBean;
|
import cc.winboll.studio.libapputils.bean.DebugBean;
|
||||||
import cc.winboll.studio.libapputils.log.LogUtils;
|
import cc.winboll.studio.libapputils.log.LogUtils;
|
||||||
@@ -58,18 +58,22 @@ public class AboutView extends LinearLayout {
|
|||||||
String mszGitea = "";
|
String mszGitea = "";
|
||||||
int mnAppIcon = 0;
|
int mnAppIcon = 0;
|
||||||
String mszWinBollServerHost;
|
String mszWinBollServerHost;
|
||||||
String mszReleaseAPKName;
|
//String mszReleaseAPKName;
|
||||||
EditText metDevUserName;
|
EditText metDevUserName;
|
||||||
EditText metDevUserPassword;
|
EditText metDevUserPassword;
|
||||||
|
|
||||||
public AboutView(Context context, APPInfo appInfo) {
|
public AboutView(Context context, APPInfo appInfo) {
|
||||||
super(context);
|
super(context);
|
||||||
|
mContext = context;
|
||||||
|
|
||||||
setAPPInfo(appInfo);
|
setAPPInfo(appInfo);
|
||||||
initView(context);
|
initView(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AboutView(Context context, AttributeSet attrs) {
|
public AboutView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
|
mContext = context;
|
||||||
|
|
||||||
initView(context, attrs);
|
initView(context, attrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,6 +88,8 @@ public class AboutView extends LinearLayout {
|
|||||||
appInfo.setAppAPKFolderName(typedArray.getString(R.styleable.AboutView_app_apkfoldername));
|
appInfo.setAppAPKFolderName(typedArray.getString(R.styleable.AboutView_app_apkfoldername));
|
||||||
appInfo.setAppAPKName(typedArray.getString(R.styleable.AboutView_app_apkname));
|
appInfo.setAppAPKName(typedArray.getString(R.styleable.AboutView_app_apkname));
|
||||||
appInfo.setAppGitName(typedArray.getString(R.styleable.AboutView_app_gitname));
|
appInfo.setAppGitName(typedArray.getString(R.styleable.AboutView_app_gitname));
|
||||||
|
appInfo.setAppGitAPPBranch(typedArray.getString(R.styleable.AboutView_app_gitappbranch));
|
||||||
|
appInfo.setAppGitAPPSubProjectFolder(typedArray.getString(R.styleable.AboutView_app_gitappsubprojectfolder));
|
||||||
appInfo.setAppDescription(typedArray.getString(R.styleable.AboutView_appdescription));
|
appInfo.setAppDescription(typedArray.getString(R.styleable.AboutView_appdescription));
|
||||||
appInfo.setAppIcon(typedArray.getResourceId(R.styleable.AboutView_appicon, R.drawable.ic_winboll));
|
appInfo.setAppIcon(typedArray.getResourceId(R.styleable.AboutView_appicon, R.drawable.ic_winboll));
|
||||||
// 返回一个绑定资源结束的信号给资源
|
// 返回一个绑定资源结束的信号给资源
|
||||||
@@ -92,8 +98,6 @@ public class AboutView extends LinearLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void initView(Context context) {
|
void initView(Context context) {
|
||||||
mContext = context;
|
|
||||||
|
|
||||||
mszAppName = mAPPInfo.getAppName();
|
mszAppName = mAPPInfo.getAppName();
|
||||||
mszAppAPKFolderName = mAPPInfo.getAppAPKFolderName();
|
mszAppAPKFolderName = mAPPInfo.getAppAPKFolderName();
|
||||||
mszAppAPKName = mAPPInfo.getAppAPKName();
|
mszAppAPKName = mAPPInfo.getAppAPKName();
|
||||||
@@ -101,18 +105,18 @@ public class AboutView extends LinearLayout {
|
|||||||
mszAppDescription = mAPPInfo.getAppDescription();
|
mszAppDescription = mAPPInfo.getAppDescription();
|
||||||
mnAppIcon = mAPPInfo.getAppIcon();
|
mnAppIcon = mAPPInfo.getAppIcon();
|
||||||
|
|
||||||
mszWinBollServerHost = WinBollApplication.isDebug() ? "http://10.8.0.13": "https://www.winboll.cc";
|
mszWinBollServerHost = WinBollUtils.isDebug() ? "https://dev.winboll.cc": "https://www.winboll.cc";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mszAppVersionName = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionName;
|
mszAppVersionName = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionName;
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
mszCurrentAppPackageName = mszAppName + "_" + mszAppVersionName + ".apk";
|
mszCurrentAppPackageName = mszAppAPKName + "_" + mszAppVersionName + ".apk";
|
||||||
mszHomePage = mszWinBollServerHost + "/studio/details.php?app=" + mszAppAPKFolderName;
|
mszHomePage = mszWinBollServerHost + "/studio/details.php?app=" + mszAppAPKFolderName;
|
||||||
mszGitea = "https://gitea.winboll.cc/Studio/" + mszAppGitName + ".git";
|
mszGitea = "https://gitea.winboll.cc/Studio/" + mszAppGitName + "/src/branch/" + mAPPInfo.getAppGitAPPBranch() + "/" + mAPPInfo.getAppGitAPPSubProjectFolder();
|
||||||
|
|
||||||
if (WinBollApplication.isDebug()) {
|
if (WinBollUtils.isDebug()) {
|
||||||
LayoutInflater inflater = LayoutInflater.from(mContext);
|
LayoutInflater inflater = LayoutInflater.from(mContext);
|
||||||
View addedView = inflater.inflate(R.layout.view_about_dev, this, false);
|
View addedView = inflater.inflate(R.layout.view_about_dev, this, false);
|
||||||
LinearLayout llMain = addedView.findViewById(R.id.viewaboutdevLinearLayout1);
|
LinearLayout llMain = addedView.findViewById(R.id.viewaboutdevLinearLayout1);
|
||||||
@@ -146,15 +150,16 @@ public class AboutView extends LinearLayout {
|
|||||||
//llMain.addView(createAboutPage());
|
//llMain.addView(createAboutPage());
|
||||||
|
|
||||||
// 就读取正式版应用包版本号,设置 Release 应用包文件名
|
// 就读取正式版应用包版本号,设置 Release 应用包文件名
|
||||||
String szReleaseAppVersionName = "";
|
// String szReleaseAppVersionName = "";
|
||||||
try {
|
// try {
|
||||||
szReleaseAppVersionName = mContext.getPackageManager().getPackageInfo(subBetaSuffix(mContext.getPackageName()), 0).versionName;
|
// //LogUtils.d(TAG, String.format("mContext.getPackageName() %s", mContext.getPackageName()));
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
// String szSubBetaSuffix = subBetaSuffix(mContext.getPackageName());
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
// //LogUtils.d(TAG, String.format("szSubBetaSuffix : %s", szSubBetaSuffix));
|
||||||
}
|
// szReleaseAppVersionName = mContext.getPackageManager().getPackageInfo(szSubBetaSuffix, 0).versionName;
|
||||||
mszReleaseAPKName = mszAppAPKName + "_" + szReleaseAppVersionName + ".apk";
|
// } catch (PackageManager.NameNotFoundException e) {
|
||||||
|
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
|
// }
|
||||||
|
// mszReleaseAPKName = mszAppAPKName + "_" + szReleaseAppVersionName + ".apk";
|
||||||
}
|
}
|
||||||
|
|
||||||
void initView(Context context, AttributeSet attrs) {
|
void initView(Context context, AttributeSet attrs) {
|
||||||
@@ -181,10 +186,13 @@ public class AboutView extends LinearLayout {
|
|||||||
return;
|
return;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (!AppVersionUtils.isHasNewStageReleaseVersion(mszReleaseAPKName, mszNewestAppPackageName)) {
|
// if (!AppVersionUtils.isHasNewStageReleaseVersion(mszReleaseAPKName, mszNewestAppPackageName)) {
|
||||||
|
// ToastUtils.delayedShow("Current app is the newest.", 5000);
|
||||||
|
// }
|
||||||
|
if (!AppVersionUtils.isHasNewVersion2(mszCurrentAppPackageName, mszNewestAppPackageName)) {
|
||||||
ToastUtils.delayedShow("Current app is the newest.", 5000);
|
ToastUtils.delayedShow("Current app is the newest.", 5000);
|
||||||
} else {
|
} else {
|
||||||
String szMsg = "Current app is :\n[ " + mszReleaseAPKName
|
String szMsg = "Current app is :\n[ " + mszCurrentAppPackageName
|
||||||
+ " ]\nThe last app is :\n[ " + mszNewestAppPackageName
|
+ " ]\nThe last app is :\n[ " + mszNewestAppPackageName
|
||||||
+ " ]\nIs download the last app?";
|
+ " ]\nIs download the last app?";
|
||||||
YesNoAlertDialog.show(mContext, "Application Update Prompt", szMsg, mIsDownlaodUpdateListener);
|
YesNoAlertDialog.show(mContext, "Application Update Prompt", szMsg, mIsDownlaodUpdateListener);
|
||||||
@@ -199,7 +207,7 @@ public class AboutView extends LinearLayout {
|
|||||||
// 定义应用调试按钮
|
// 定义应用调试按钮
|
||||||
//
|
//
|
||||||
Element elementAppMode;
|
Element elementAppMode;
|
||||||
if (WinBollApplication.isDebug()) {
|
if (WinBollUtils.isDebug()) {
|
||||||
elementAppMode = new Element(mContext.getString(R.string.app_normal), R.drawable.ic_winboll);
|
elementAppMode = new Element(mContext.getString(R.string.app_normal), R.drawable.ic_winboll);
|
||||||
elementAppMode.setOnClickListener(mAppNormalOnClickListener);
|
elementAppMode.setOnClickListener(mAppNormalOnClickListener);
|
||||||
} else {
|
} else {
|
||||||
@@ -265,7 +273,7 @@ public class AboutView extends LinearLayout {
|
|||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
intent.setAction(cc.winboll.studio.libapputils.intent.action.DEBUGVIEW);
|
intent.setAction(cc.winboll.studio.libapputils.intent.action.DEBUGVIEW);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
WinBollApplication.setIsDebug(true);
|
WinBollUtils.setIsDebug(true);
|
||||||
DebugBean.saveBean(context, new DebugBean(true));
|
DebugBean.saveBean(context, new DebugBean(true));
|
||||||
|
|
||||||
WinBollActivityManager.getInstance(context).finishAll();
|
WinBollActivityManager.getInstance(context).finishAll();
|
||||||
@@ -277,7 +285,7 @@ public class AboutView extends LinearLayout {
|
|||||||
Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
|
Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
WinBollApplication.setIsDebug(false);
|
WinBollUtils.setIsDebug(false);
|
||||||
DebugBean.saveBean(context, new DebugBean(false));
|
DebugBean.saveBean(context, new DebugBean(false));
|
||||||
|
|
||||||
WinBollActivityManager.getInstance(context).finishAll();
|
WinBollActivityManager.getInstance(context).finishAll();
|
||||||
@@ -303,7 +311,7 @@ public class AboutView extends LinearLayout {
|
|||||||
String szUrl = mszWinBollServerHost + "/studio/details.php?app=" + mszAppAPKFolderName;
|
String szUrl = mszWinBollServerHost + "/studio/details.php?app=" + mszAppAPKFolderName;
|
||||||
// 构建包含认证信息的请求
|
// 构建包含认证信息的请求
|
||||||
String credential = "";
|
String credential = "";
|
||||||
if (WinBollApplication.isDebug()) {
|
if (WinBollUtils.isDebug()) {
|
||||||
credential = Credentials.basic(metDevUserName.getText().toString(), metDevUserPassword.getText().toString());
|
credential = Credentials.basic(metDevUserName.getText().toString(), metDevUserPassword.getText().toString());
|
||||||
PrefUtils.saveString(mContext, "metDevUserName", metDevUserName.getText().toString());
|
PrefUtils.saveString(mContext, "metDevUserName", metDevUserName.getText().toString());
|
||||||
PrefUtils.saveString(mContext, "metDevUserPassword", metDevUserPassword.getText().toString());
|
PrefUtils.saveString(mContext, "metDevUserPassword", metDevUserPassword.getText().toString());
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
<attr name="app_apkfoldername" format="string" />
|
<attr name="app_apkfoldername" format="string" />
|
||||||
<attr name="app_apkname" format="string" />
|
<attr name="app_apkname" format="string" />
|
||||||
<attr name="app_gitname" format="string" />
|
<attr name="app_gitname" format="string" />
|
||||||
|
<attr name="app_gitappbranch" format="string" />
|
||||||
|
<attr name="app_gitappsubprojectfolder" format="string" />
|
||||||
<attr name="appdescription" format="string" />
|
<attr name="appdescription" format="string" />
|
||||||
<attr name="appicon" format="reference" />
|
<attr name="appicon" format="reference" />
|
||||||
</declare-styleable>
|
</declare-styleable>
|
||||||
|
|||||||
Reference in New Issue
Block a user