Compare commits
14 Commits
powerbell-
...
aes
| Author | SHA1 | Date | |
|---|---|---|---|
| c30588f174 | |||
| b5ccbd09f4 | |||
|
|
d8a6049abb | ||
| 8e15c82129 | |||
| 44fc3b1899 | |||
|
|
cdb9d8d41b | ||
|
|
51b6179df6 | ||
|
|
f32563b906 | ||
| 5cb6309134 | |||
| 27f84d9e18 | |||
|
|
3e8dde50ec | ||
|
|
fd0315d3cf | ||
| c1af20009a | |||
|
|
cb3796bfea |
@@ -29,7 +29,7 @@ android {
|
|||||||
// versionName 更新后需要手动设置
|
// versionName 更新后需要手动设置
|
||||||
// 项目模块目录的 build.gradle 文件的 stageCount=0
|
// 项目模块目录的 build.gradle 文件的 stageCount=0
|
||||||
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
||||||
versionName "15.9"
|
versionName "15.10"
|
||||||
if(true) {
|
if(true) {
|
||||||
versionName = genVersionName("${versionName}")
|
versionName = genVersionName("${versionName}")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun Aug 31 23:40:17 HKT 2025
|
#Mon Sep 29 13:04:18 HKT 2025
|
||||||
stageCount=4
|
stageCount=3
|
||||||
libraryProject=libaes
|
libraryProject=libaes
|
||||||
baseVersion=15.9
|
baseVersion=15.10
|
||||||
publishVersion=15.9.3
|
publishVersion=15.10.2
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.9.4
|
baseBetaVersion=15.10.3
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
<activity android:name=".AboutActivity"/>
|
<activity android:name=".AboutActivity"/>
|
||||||
|
|
||||||
|
<activity android:name=".TestActivityManagerActivity"/>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
@@ -12,18 +12,18 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import cc.winboll.studio.libaes.winboll.APPInfo;
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
import cc.winboll.studio.libaes.winboll.AboutView;
|
import cc.winboll.studio.libaes.models.APPInfo;
|
||||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||||
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
import cc.winboll.studio.libaes.views.AboutView;
|
||||||
|
|
||||||
public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity {
|
public class AboutActivity extends WinBoLLActivity implements IWinBoLLActivity {
|
||||||
|
|
||||||
public static final String TAG = "AboutActivity";
|
public static final String TAG = "AboutActivity";
|
||||||
|
|
||||||
Context mContext;
|
Context mContext;
|
||||||
Toolbar mToolbar;
|
Toolbar mToolbar;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Activity getActivity() {
|
public Activity getActivity() {
|
||||||
return this;
|
return this;
|
||||||
@@ -33,7 +33,7 @@ public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity
|
|||||||
public String getTag() {
|
public String getTag() {
|
||||||
return TAG;
|
return TAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -64,13 +64,13 @@ public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity
|
|||||||
);
|
);
|
||||||
layout.addView(aboutView, params);
|
layout.addView(aboutView, params);
|
||||||
|
|
||||||
GlobalApplication.getWinBoLLActivityManager().add(this);
|
WinBoLLActivityManager.getInstance().add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
GlobalApplication.getWinBoLLActivityManager().registeRemove(this);
|
WinBoLLActivityManager.getInstance().registeRemove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AboutView CreateAboutView() {
|
public AboutView CreateAboutView() {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package cc.winboll.studio.aes;
|
|||||||
* @Describe AES应用类
|
* @Describe AES应用类
|
||||||
*/
|
*/
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
|
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
import com.hjq.toast.style.WhiteToastStyle;
|
import com.hjq.toast.style.WhiteToastStyle;
|
||||||
@@ -18,6 +19,7 @@ public class App extends GlobalApplication {
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
WinBoLLActivityManager.init(this);
|
||||||
|
|
||||||
// 初始化 Toast 框架
|
// 初始化 Toast 框架
|
||||||
ToastUtils.init(this);
|
ToastUtils.init(this);
|
||||||
|
|||||||
@@ -15,9 +15,10 @@ import android.widget.AdapterView;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import cc.winboll.studio.aes.R;
|
import cc.winboll.studio.aes.R;
|
||||||
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
||||||
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
|
|
||||||
import cc.winboll.studio.libaes.dialogs.LocalFileSelectDialog;
|
import cc.winboll.studio.libaes.dialogs.LocalFileSelectDialog;
|
||||||
import cc.winboll.studio.libaes.dialogs.StoragePathDialog;
|
import cc.winboll.studio.libaes.dialogs.StoragePathDialog;
|
||||||
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
|
import cc.winboll.studio.libaes.models.DrawerMenuBean;
|
||||||
import cc.winboll.studio.libaes.unittests.SecondaryLibraryActivity;
|
import cc.winboll.studio.libaes.unittests.SecondaryLibraryActivity;
|
||||||
import cc.winboll.studio.libaes.unittests.TestAButtonFragment;
|
import cc.winboll.studio.libaes.unittests.TestAButtonFragment;
|
||||||
import cc.winboll.studio.libaes.unittests.TestASupportToolbarActivity;
|
import cc.winboll.studio.libaes.unittests.TestASupportToolbarActivity;
|
||||||
@@ -25,10 +26,10 @@ import cc.winboll.studio.libaes.unittests.TestAToolbarActivity;
|
|||||||
import cc.winboll.studio.libaes.unittests.TestDrawerFragmentActivity;
|
import cc.winboll.studio.libaes.unittests.TestDrawerFragmentActivity;
|
||||||
import cc.winboll.studio.libaes.unittests.TestViewPageFragment;
|
import cc.winboll.studio.libaes.unittests.TestViewPageFragment;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
import com.a4455jkjh.colorpicker.ColorPickerDialog;
|
import com.a4455jkjh.colorpicker.ColorPickerDialog;
|
||||||
import com.hjq.toast.ToastUtils;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||||
|
|
||||||
public class MainActivity extends DrawerFragmentActivity implements IWinBoLLActivity {
|
public class MainActivity extends DrawerFragmentActivity implements IWinBoLLActivity {
|
||||||
|
|
||||||
@@ -122,9 +123,10 @@ public class MainActivity extends DrawerFragmentActivity implements IWinBoLLActi
|
|||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
int nItemId = item.getItemId();
|
int nItemId = item.getItemId();
|
||||||
// if (item.getItemId() == R.id.item_log) {
|
if (item.getItemId() == R.id.item_testactivitymanager) {
|
||||||
// WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(getApplicationContext(), LogActivity.class);
|
WinBoLLActivityManager.getInstance().startWinBoLLActivity(this, TestActivityManagerActivity.class);
|
||||||
// } else
|
//ToastUtils.show("item_testactivitymanager");
|
||||||
|
} else
|
||||||
if (nItemId == R.id.item_atoast) {
|
if (nItemId == R.id.item_atoast) {
|
||||||
Toast.makeText(getApplication(), "item_testatoast", Toast.LENGTH_SHORT).show();
|
Toast.makeText(getApplication(), "item_testatoast", Toast.LENGTH_SHORT).show();
|
||||||
} else if (nItemId == R.id.item_atoolbar) {
|
} else if (nItemId == R.id.item_atoolbar) {
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package cc.winboll.studio.aes;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||||
|
* @Date 2025/09/28 21:07
|
||||||
|
* @Describe 窗口管理类测试窗口
|
||||||
|
*/
|
||||||
|
public class TestActivityManagerActivity extends WinBoLLActivity implements IWinBoLLActivity {
|
||||||
|
|
||||||
|
public static final String TAG = "TestActivityManagerActivity";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Activity getActivity() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTag() {
|
||||||
|
return TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_testactivitymanager);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
60
aes/src/main/java/cc/winboll/studio/aes/WinBoLLActivity.java
Normal file
60
aes/src/main/java/cc/winboll/studio/aes/WinBoLLActivity.java
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
package cc.winboll.studio.aes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||||
|
* @Date 2025/09/29 00:11
|
||||||
|
* @Describe WinBoLL 窗口基础类
|
||||||
|
*/
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
|
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
|
||||||
|
public class WinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity {
|
||||||
|
|
||||||
|
public static final String TAG = "WinBoLLActivity";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Activity getActivity() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTag() {
|
||||||
|
return TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
LogUtils.d(TAG, String.format("onResume %s", getTag()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
/*if (item.getItemId() == R.id.item_log) {
|
||||||
|
WinBoLLActivityManager.getInstance().startLogActivity(this);
|
||||||
|
return true;
|
||||||
|
} else if (item.getItemId() == R.id.item_home) {
|
||||||
|
startActivity(new Intent(this, MainActivity.class));
|
||||||
|
return true;
|
||||||
|
}*/
|
||||||
|
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostCreate(Bundle savedInstanceState) {
|
||||||
|
super.onPostCreate(savedInstanceState);
|
||||||
|
WinBoLLActivityManager.getInstance().add(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
WinBoLLActivityManager.getInstance().registeRemove(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
15
aes/src/main/res/layout/activity_testactivitymanager.xml
Normal file
15
aes/src/main/res/layout/activity_testactivitymanager.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="窗口管理类测试窗口"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/item_testactivitymanager"
|
||||||
|
android:title="TestActivityManager"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/item_log"
|
android:id="@+id/item_log"
|
||||||
android:title="LogActivity"/>
|
android:title="LogActivity"/>
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
api 'cc.winboll.studio:libapputils:15.8.5'
|
api 'cc.winboll.studio:libapputils:15.10.2'
|
||||||
api 'cc.winboll.studio:libappbase:15.9.5'
|
api 'cc.winboll.studio:libappbase:15.10.9'
|
||||||
|
|
||||||
// 吐司类库
|
// 吐司类库
|
||||||
api 'com.github.getActivity:ToastUtils:10.5'
|
api 'com.github.getActivity:ToastUtils:10.5'
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun Aug 31 05:00:43 CST 2025
|
#Mon Sep 29 13:04:07 HKT 2025
|
||||||
stageCount=4
|
stageCount=3
|
||||||
libraryProject=libaes
|
libraryProject=libaes
|
||||||
baseVersion=15.9
|
baseVersion=15.10
|
||||||
publishVersion=15.9.3
|
publishVersion=15.10.2
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.9.4
|
baseBetaVersion=15.10.3
|
||||||
|
|||||||
@@ -23,17 +23,16 @@ import androidx.fragment.app.FragmentManager;
|
|||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
import cc.winboll.studio.libaes.DrawerMenuDataAdapter;
|
import cc.winboll.studio.libaes.DrawerMenuDataAdapter;
|
||||||
import cc.winboll.studio.libaes.R;
|
import cc.winboll.studio.libaes.R;
|
||||||
import cc.winboll.studio.libaes.beans.AESThemeBean;
|
import cc.winboll.studio.libaes.models.AESThemeBean;
|
||||||
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
|
import cc.winboll.studio.libaes.models.DrawerMenuBean;
|
||||||
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
||||||
import cc.winboll.studio.libaes.views.ADrawerMenuListView;
|
import cc.winboll.studio.libaes.views.ADrawerMenuListView;
|
||||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
|
||||||
import com.baoyz.widget.PullRefreshLayout;
|
import com.baoyz.widget.PullRefreshLayout;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||||
|
|
||||||
public abstract class DrawerFragmentActivity extends AppCompatActivity implements IWinBoLLActivity,AdapterView.OnItemClickListener {
|
public abstract class DrawerFragmentActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
|
||||||
|
|
||||||
public static final String TAG = "DrawerFragmentActivity";
|
public static final String TAG = "DrawerFragmentActivity";
|
||||||
|
|
||||||
@@ -176,8 +175,6 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
|
|||||||
for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) {
|
for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) {
|
||||||
getString(i);
|
getString(i);
|
||||||
}
|
}
|
||||||
// } else if (R.id.item_log == item.getItemId()) {
|
|
||||||
// GlobalApplication.getWinBoLLActivityManager().startLogActivity(this);
|
|
||||||
} else if (R.id.item_about == item.getItemId()) {
|
} else if (R.id.item_about == item.getItemId()) {
|
||||||
LogUtils.d(TAG, "onAbout");
|
LogUtils.d(TAG, "onAbout");
|
||||||
} else if (android.R.id.home == item.getItemId()) {
|
} else if (android.R.id.home == item.getItemId()) {
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package cc.winboll.studio.libaes.dialogs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
|
* @Date 2025/03/28 17:40:47
|
||||||
|
* @Date 2024/08/12 14:46:25
|
||||||
|
* @Describe 询问用户确定与否的选择框
|
||||||
|
*/
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
|
||||||
|
public class YesNoAlertDialog {
|
||||||
|
|
||||||
|
public static final String TAG = "YesNoAlertDialog";
|
||||||
|
|
||||||
|
public static void show(Context context, String szTitle, String szMessage, final OnDialogResultListener listener) {
|
||||||
|
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
|
||||||
|
context);
|
||||||
|
|
||||||
|
// set title
|
||||||
|
alertDialogBuilder.setTitle(szTitle);
|
||||||
|
|
||||||
|
// set dialog message
|
||||||
|
alertDialogBuilder
|
||||||
|
.setMessage(szMessage)
|
||||||
|
.setCancelable(true)
|
||||||
|
.setOnCancelListener(new DialogInterface.OnCancelListener(){
|
||||||
|
@Override
|
||||||
|
public void onCancel(DialogInterface dialog) {
|
||||||
|
listener.onNo();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.setPositiveButton("YES", new DialogInterface.OnClickListener() {
|
||||||
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
|
// if this button is clicked, close
|
||||||
|
// current activity
|
||||||
|
listener.onYes();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.setNegativeButton("NO", new DialogInterface.OnClickListener() {
|
||||||
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
|
// if this button is clicked, just close
|
||||||
|
// the dialog box and do nothing
|
||||||
|
dialog.cancel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// create alert dialog
|
||||||
|
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||||
|
|
||||||
|
// show it
|
||||||
|
alertDialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OnDialogResultListener {
|
||||||
|
abstract void onYes();
|
||||||
|
abstract void onNo();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package cc.winboll.studio.libaes.interfaces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
|
* @Date 2025/05/10 09:34
|
||||||
|
* @Describe WinBoLL 窗口操作接口
|
||||||
|
*/
|
||||||
|
import android.app.Activity;
|
||||||
|
|
||||||
|
public abstract interface IWinBoLLActivity {
|
||||||
|
|
||||||
|
public static final String TAG = "IWinBoLLActivity";
|
||||||
|
|
||||||
|
public static final String ACTION_BIND = IWinBoLLActivity.class.getName() + ".ACTION_BIND";
|
||||||
|
|
||||||
|
public Activity getActivity();
|
||||||
|
public String getTag();
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cc.winboll.studio.libaes.beans;
|
package cc.winboll.studio.libaes.models;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen<zhangsken@qq.com>
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cc.winboll.studio.libaes.winboll;
|
package cc.winboll.studio.libaes.models;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen<zhangsken@qq.com>
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cc.winboll.studio.libaes.beans;
|
package cc.winboll.studio.libaes.models;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen<zhangsken@qq.com>
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cc.winboll.studio.libaes.beans;
|
package cc.winboll.studio.libaes.models;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen
|
* @Author ZhanGSKen
|
||||||
@@ -7,7 +7,7 @@ import android.view.MenuItem;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import cc.winboll.studio.libaes.R;
|
import cc.winboll.studio.libaes.R;
|
||||||
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
||||||
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen<zhangsken@qq.com>
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import android.os.Bundle;
|
|||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import cc.winboll.studio.libaes.R;
|
import cc.winboll.studio.libaes.R;
|
||||||
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
||||||
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
|
||||||
|
|
||||||
public class TestASupportToolbarActivity extends AppCompatActivity implements IWinBoLLActivity {
|
public class TestASupportToolbarActivity extends AppCompatActivity implements IWinBoLLActivity {
|
||||||
|
|
||||||
|
|||||||
@@ -10,22 +10,11 @@ import android.os.Bundle;
|
|||||||
import android.widget.Toolbar;
|
import android.widget.Toolbar;
|
||||||
import cc.winboll.studio.libaes.R;
|
import cc.winboll.studio.libaes.R;
|
||||||
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
||||||
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
|
||||||
|
|
||||||
public class TestAToolbarActivity extends Activity implements IWinBoLLActivity {
|
public class TestAToolbarActivity extends Activity {
|
||||||
|
|
||||||
public static final String TAG = "TestAToolbarActivity";
|
public static final String TAG = "TestAToolbarActivity";
|
||||||
|
|
||||||
@Override
|
|
||||||
public Activity getActivity() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getTag() {
|
|
||||||
return TAG;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
AESThemeUtil.applyAppTheme(this);
|
AESThemeUtil.applyAppTheme(this);
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ import android.widget.Toast;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import cc.winboll.studio.libaes.R;
|
import cc.winboll.studio.libaes.R;
|
||||||
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
||||||
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
|
import cc.winboll.studio.libaes.models.DrawerMenuBean;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class TestDrawerFragmentActivity extends DrawerFragmentActivity implements IWinBoLLActivity {
|
public class TestDrawerFragmentActivity extends DrawerFragmentActivity implements IWinBoLLActivity {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import android.view.MenuItem;
|
|||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import cc.winboll.studio.libaes.R;
|
import cc.winboll.studio.libaes.R;
|
||||||
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
||||||
import cc.winboll.studio.libaes.beans.AESThemeBean;
|
import cc.winboll.studio.libaes.models.AESThemeBean;
|
||||||
|
|
||||||
public class AESThemeUtil {
|
public class AESThemeUtil {
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,97 @@
|
|||||||
|
package cc.winboll.studio.libaes.utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
|
* @Date 2025/03/25 04:29:19
|
||||||
|
*/
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.Application;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
|
||||||
|
public class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
|
||||||
|
|
||||||
|
public static final String TAG = "MyActivityLifecycleCallbacks";
|
||||||
|
|
||||||
|
public String mInfo = "";
|
||||||
|
|
||||||
|
public MyActivityLifecycleCallbacks() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void createActivityeInfo(Activity activity) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
Intent receivedIntent = activity.getIntent();
|
||||||
|
sb.append("\nCallingActivity : \n");
|
||||||
|
if (activity.getCallingActivity() != null) {
|
||||||
|
sb.append(activity.getCallingActivity().getPackageName());
|
||||||
|
}
|
||||||
|
sb.append("\nReceived Intent Package : \n");
|
||||||
|
sb.append(receivedIntent.getPackage());
|
||||||
|
|
||||||
|
Bundle extras = receivedIntent.getExtras();
|
||||||
|
if (extras != null) {
|
||||||
|
for (String key : extras.keySet()) {
|
||||||
|
sb.append("\nIntentInfo");
|
||||||
|
sb.append("\n键: ");
|
||||||
|
sb.append(key);
|
||||||
|
sb.append(", 值: ");
|
||||||
|
sb.append(extras.get(key));
|
||||||
|
//Log.d("IntentInfo", "键: " + key + ", 值: " + extras.get(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mInfo = sb.toString();
|
||||||
|
//Log.d("IntentInfo", "发送Intent的应用包名: " + senderPackage);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void showActivityeInfo() {
|
||||||
|
//ToastUtils.show("ActivityeInfo : " + mInfo);
|
||||||
|
LogUtils.d(TAG, "ActivityeInfo : " + mInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
|
||||||
|
// 在这里可以做一些初始化相关的操作,例如记录Activity的创建时间等
|
||||||
|
//System.out.println(activity.getLocalClassName() + " was created");
|
||||||
|
LogUtils.d(TAG, activity.getLocalClassName() + " was created");
|
||||||
|
createActivityeInfo(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityStarted(Activity activity) {
|
||||||
|
//System.out.println(activity.getLocalClassName() + " was started");
|
||||||
|
LogUtils.d(TAG, activity.getLocalClassName() + " was started");
|
||||||
|
//createActivityeInfo(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityResumed(Activity activity) {
|
||||||
|
//System.out.println(activity.getLocalClassName() + " was resumed");
|
||||||
|
LogUtils.d(TAG, activity.getLocalClassName() + " was resumed");
|
||||||
|
//createActivityeInfo(activity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityPaused(Activity activity) {
|
||||||
|
//System.out.println(activity.getLocalClassName() + " was paused");
|
||||||
|
LogUtils.d(TAG, activity.getLocalClassName() + " was paused");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityStopped(Activity activity) {
|
||||||
|
//System.out.println(activity.getLocalClassName() + " was stopped");
|
||||||
|
LogUtils.d(TAG, activity.getLocalClassName() + " was stopped");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
|
||||||
|
// 可以在这里添加保存状态的自定义逻辑
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityDestroyed(Activity activity) {
|
||||||
|
//System.out.println(activity.getLocalClassName() + " was destroyed");
|
||||||
|
LogUtils.d(TAG, activity.getLocalClassName() + " was destroyed");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,292 @@
|
|||||||
|
package cc.winboll.studio.libaes.utils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
|
* @Date 2025/05/10 10:02
|
||||||
|
* @Describe 应用活动窗口管理器
|
||||||
|
* 参考 :
|
||||||
|
* android 类似微信小程序多任务窗口 及 设置 TaskDescription 修改 icon 和 label
|
||||||
|
* https://blog.csdn.net/qq_29364417/article/details/109379915?app_version=6.4.2&code=app_1562916241&csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22109379915%22%2C%22source%22%3A%22weixin_38986226%22%7D&uLinkId=usr1mkqgl919blen&utm_source=app
|
||||||
|
*/
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.ActivityManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||||
|
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||||
|
import cc.winboll.studio.libappbase.LogActivity;
|
||||||
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class WinBoLLActivityManager {
|
||||||
|
|
||||||
|
public static final String TAG = "WinBoLLActivityManager";
|
||||||
|
|
||||||
|
public static final String EXTRA_TAG = "EXTRA_TAG";
|
||||||
|
|
||||||
|
|
||||||
|
public enum WinBoLLUI_TYPE { Aplication, Service }
|
||||||
|
|
||||||
|
GlobalApplication mGlobalApplication;
|
||||||
|
volatile static WinBoLLActivityManager _mIWinBoLLActivityManager;
|
||||||
|
Map<String, IWinBoLLActivity> mActivityListMap;
|
||||||
|
|
||||||
|
volatile static WinBoLLUI_TYPE _WinBoLLUI_TYPE = WinBoLLUI_TYPE.Service;
|
||||||
|
public static void setWinBoLLUI_TYPE(WinBoLLUI_TYPE winBoLLUI_TYPE) {
|
||||||
|
_WinBoLLUI_TYPE = winBoLLUI_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WinBoLLUI_TYPE getWinBoLLUI_TYPE() {
|
||||||
|
return _WinBoLLUI_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
WinBoLLActivityManager(GlobalApplication application) {
|
||||||
|
mGlobalApplication = application;
|
||||||
|
mActivityListMap = new HashMap<String, IWinBoLLActivity>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WinBoLLActivityManager getInstance() {
|
||||||
|
return _mIWinBoLLActivityManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static synchronized <T extends GlobalApplication> void init(T application) {
|
||||||
|
if (_mIWinBoLLActivityManager == null) {
|
||||||
|
_mIWinBoLLActivityManager = new WinBoLLActivityManager(application);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 把Activity添加到管理中
|
||||||
|
*/
|
||||||
|
public <T extends IWinBoLLActivity> void add(T activity) {
|
||||||
|
if (isActivityActive(activity.getTag())) {
|
||||||
|
LogUtils.d(TAG, String.format("add(...) %s is active.", activity.getTag()));
|
||||||
|
} else {
|
||||||
|
mActivityListMap.put(activity.getTag(), activity);
|
||||||
|
LogUtils.d(TAG, String.format("Add activity : %s\n_mapActivityList.size() : %d", activity.getTag(), mActivityListMap.size()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// activity: 为 null 时,
|
||||||
|
// intent.putExtra 函数 "tag" 参数为 tag
|
||||||
|
// activity: 不为 null 时,
|
||||||
|
// intent.putExtra 函数 "tag" 参数为 activity.getTag()
|
||||||
|
//
|
||||||
|
public <T extends IWinBoLLActivity> void startWinBoLLActivity(Context context, Class<T> clazz) {
|
||||||
|
// 如果窗口已存在就重启窗口
|
||||||
|
if (!resumeActivity(clazz)) {
|
||||||
|
// 新建一个任务窗口
|
||||||
|
Intent intent = new Intent(context, clazz);
|
||||||
|
//打开多任务窗口 flags
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
|
//intent.putExtra("tag", tag);
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends IWinBoLLActivity> void startWinBoLLActivity(Context context, Intent intent, Class<T> clazz) {
|
||||||
|
// 如果窗口已存在就重启窗口
|
||||||
|
if (!resumeActivity(clazz)) {
|
||||||
|
// 新建一个任务窗口
|
||||||
|
//Intent intent = new Intent(context, clazz);
|
||||||
|
//打开多任务窗口 flags
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
|
//intent.putExtra("tag", tag);
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends IWinBoLLActivity> void startLogActivity(Context context) {
|
||||||
|
// 如果窗口已存在就重启窗口
|
||||||
|
//if (!resumeActivity(LogActivity.class)) {
|
||||||
|
// 新建一个任务窗口
|
||||||
|
Intent intent = new Intent(context, LogActivity.class);
|
||||||
|
//打开多任务窗口 flags
|
||||||
|
// Define the bounds.
|
||||||
|
// Rect bounds = new Rect(0, 0, 800, 200);
|
||||||
|
// // Set the bounds as an activity option.
|
||||||
|
// ActivityOptions options = ActivityOptions.makeBasic();
|
||||||
|
// options.setLaunchBounds(bounds);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
|
|
||||||
|
//intent.putExtra(EXTRA_TAG, tag);
|
||||||
|
|
||||||
|
//context.startActivity(intent, options.toBundle());
|
||||||
|
context.startActivity(intent);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// 判断 tag 绑定的 Activity 是否已经创建
|
||||||
|
//
|
||||||
|
public boolean isActivityActive(String tag) {
|
||||||
|
return mActivityListMap.get(tag) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Activity getActivityByTag(String tag) {
|
||||||
|
return (mActivityListMap.get(tag) == null) ?null: mActivityListMap.get(tag).getActivity();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
||||||
|
//
|
||||||
|
public <T extends IWinBoLLActivity> boolean resumeActivity(Class<T> clazz) {
|
||||||
|
try {
|
||||||
|
Activity activity = getActivityByTag(clazz.newInstance().getTag());
|
||||||
|
if (activity != null) {
|
||||||
|
return resumeActivity(activity);
|
||||||
|
}
|
||||||
|
} catch (InstantiationException | IllegalAccessException e) {
|
||||||
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
||||||
|
//
|
||||||
|
public <T extends IWinBoLLActivity> boolean resumeActivity(String tag) {
|
||||||
|
Activity activity = getActivityByTag(tag);
|
||||||
|
if (activity != null) {
|
||||||
|
return resumeActivity(activity);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
||||||
|
//
|
||||||
|
public <T extends IWinBoLLActivity> boolean resumeActivity(Activity activity) {
|
||||||
|
ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
|
//返回启动它的根任务(home 或者 MainActivity)
|
||||||
|
//Intent intent = new Intent(mContext, activity.getClass());
|
||||||
|
//TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
|
||||||
|
//stackBuilder.addNextIntentWithParentStack(intent);
|
||||||
|
//stackBuilder.startActivities();
|
||||||
|
am.moveTaskToFront(activity.getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
|
||||||
|
//ToastUtils.show("resumeActivity");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束所有 Activity
|
||||||
|
*/
|
||||||
|
public void finishAll() {
|
||||||
|
try {
|
||||||
|
//ToastUtils.show(String.format("finishAll() size : %d", _mIWinBoLLActivityList.size()));
|
||||||
|
for (int i = mActivityListMap.size() - 1; i > -1; i--) {
|
||||||
|
IWinBoLLActivity iWinBoLLActivity = mActivityListMap.get(i);
|
||||||
|
ToastUtils.show("finishAll() activity");
|
||||||
|
if (iWinBoLLActivity != null && iWinBoLLActivity.getActivity() != null && !iWinBoLLActivity.getActivity().isFinishing() && !iWinBoLLActivity.getActivity().isDestroyed()) {
|
||||||
|
//ToastUtils.show("activity != null ...");
|
||||||
|
if (getWinBoLLUI_TYPE() == WinBoLLUI_TYPE.Service) {
|
||||||
|
// 结束窗口和最近任务栏, 建议前台服务类应用使用,可以方便用户再次调用 UI 操作。
|
||||||
|
iWinBoLLActivity.getActivity().finishAndRemoveTask();
|
||||||
|
//ToastUtils.show("finishAll() activity.finishAndRemoveTask();");
|
||||||
|
} else if (getWinBoLLUI_TYPE() == WinBoLLUI_TYPE.Aplication) {
|
||||||
|
// 结束窗口保留最近任务栏,建议前台服务类应用使用,可以保持应用的系统自觉性。
|
||||||
|
iWinBoLLActivity.getActivity().finish();
|
||||||
|
//ToastUtils.show("finishAll() activity.finish();");
|
||||||
|
} else {
|
||||||
|
ToastUtils.show("WinBollApplication.WinBollUI_TYPE error.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 结束指定Activity
|
||||||
|
*/
|
||||||
|
public <T extends IWinBoLLActivity> void finish(T iWinBoLLActivity) {
|
||||||
|
try {
|
||||||
|
if (iWinBoLLActivity != null && iWinBoLLActivity.getActivity() != null && !iWinBoLLActivity.getActivity().isFinishing() && !iWinBoLLActivity.getActivity().isDestroyed()) {
|
||||||
|
//根据tag 移除 MyActivity
|
||||||
|
//String tag= activity.getTag();
|
||||||
|
//_mIWinBoLLActivityList.remove(tag);
|
||||||
|
//ToastUtils.show("remove");
|
||||||
|
//ToastUtils.show("_mIWinBoLLActivityArrayMap.size() " + Integer.toString(_mIWinBoLLActivityArrayMap.size()));
|
||||||
|
|
||||||
|
// 窗口回调规则:
|
||||||
|
// [] 当前窗口位置 >> 调度出的窗口位置
|
||||||
|
// ★:[0] 1 2 3 4 >> 1
|
||||||
|
// ★:0 1 [2] 3 4 >> 1
|
||||||
|
// ★:0 1 2 [3] 4 >> 2
|
||||||
|
// ★:0 1 2 3 [4] >> 3
|
||||||
|
// ★:[0] >> 直接关闭当前窗口
|
||||||
|
Activity preActivity = getPreActivity(iWinBoLLActivity);
|
||||||
|
iWinBoLLActivity.getActivity().finish();
|
||||||
|
if (preActivity != null) {
|
||||||
|
resumeActivity(preActivity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Activity getPreActivity(IWinBoLLActivity iWinBoLLActivity) {
|
||||||
|
try {
|
||||||
|
boolean bingo = false;
|
||||||
|
IWinBoLLActivity preIWinBoLLActivity = null;
|
||||||
|
for (Map.Entry<String, IWinBoLLActivity> entity : mActivityListMap.entrySet()) {
|
||||||
|
if (entity.getKey().equals(iWinBoLLActivity.getTag())) {
|
||||||
|
bingo = true;
|
||||||
|
LogUtils.d(TAG, "bingo");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
preIWinBoLLActivity = entity.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bingo) {
|
||||||
|
return preIWinBoLLActivity.getActivity();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends IWinBoLLActivity> boolean registeRemove(T iWinBoLLActivity) {
|
||||||
|
IWinBoLLActivity iWinBoLLActivityTest = mActivityListMap.get(iWinBoLLActivity.getTag());
|
||||||
|
if (iWinBoLLActivityTest != null) {
|
||||||
|
mActivityListMap.remove(iWinBoLLActivity.getTag());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printAvtivityListInfo() {
|
||||||
|
if (!mActivityListMap.isEmpty()) {
|
||||||
|
StringBuilder sb = new StringBuilder("Map entries : " + Integer.toString(mActivityListMap.size()));
|
||||||
|
Iterator<Map.Entry<String, IWinBoLLActivity>> iterator = mActivityListMap.entrySet().iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
Map.Entry<String, IWinBoLLActivity> entry = iterator.next();
|
||||||
|
sb.append("\nKey: " + entry.getKey() + ", \nValue: " + entry.getValue().getTag());
|
||||||
|
//ToastUtils.show("\nKey: " + entry.getKey() + ", Value: " + entry.getValue().getTag());
|
||||||
|
}
|
||||||
|
sb.append("\nMap entries end.");
|
||||||
|
LogUtils.d(TAG, sb.toString());
|
||||||
|
} else {
|
||||||
|
LogUtils.d(TAG, "The map is empty.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cc.winboll.studio.libaes.winboll;
|
package cc.winboll.studio.libaes.views;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author ZhanGSKen<zhangsken@qq.com>
|
* @Author ZhanGSKen<zhangsken@qq.com>
|
||||||
@@ -17,10 +17,12 @@ import android.view.View;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import cc.winboll.studio.libaes.R;
|
import cc.winboll.studio.libaes.R;
|
||||||
|
import cc.winboll.studio.libaes.dialogs.YesNoAlertDialog;
|
||||||
|
import cc.winboll.studio.libaes.models.APPInfo;
|
||||||
import cc.winboll.studio.libaes.utils.AppVersionUtils;
|
import cc.winboll.studio.libaes.utils.AppVersionUtils;
|
||||||
|
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog;
|
|
||||||
import cc.winboll.studio.libapputils.utils.PrefUtils;
|
import cc.winboll.studio.libapputils.utils.PrefUtils;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -32,7 +34,6 @@ import okhttp3.Credentials;
|
|||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.Request;
|
import okhttp3.Request;
|
||||||
import okhttp3.Response;
|
import okhttp3.Response;
|
||||||
import mehdi.sakout.aboutpage.BuildConfig;
|
|
||||||
|
|
||||||
public class AboutView extends LinearLayout {
|
public class AboutView extends LinearLayout {
|
||||||
|
|
||||||
@@ -40,10 +41,10 @@ public class AboutView extends LinearLayout {
|
|||||||
|
|
||||||
public static final int MSG_APPUPDATE_CHECKED = 0;
|
public static final int MSG_APPUPDATE_CHECKED = 0;
|
||||||
|
|
||||||
Context mContext;
|
static Context _mContext;
|
||||||
APPInfo mAPPInfo;
|
APPInfo mAPPInfo;
|
||||||
|
|
||||||
WinBoLLServiceStatusView mWinBoLLServiceStatusView;
|
//WinBoLLServiceStatusView mWinBoLLServiceStatusView;
|
||||||
OnRequestDevUserInfoAutofillListener mOnRequestDevUserInfoAutofillListener;
|
OnRequestDevUserInfoAutofillListener mOnRequestDevUserInfoAutofillListener;
|
||||||
String mszAppName = "";
|
String mszAppName = "";
|
||||||
String mszAppAPKFolderName = "";
|
String mszAppAPKFolderName = "";
|
||||||
@@ -64,7 +65,7 @@ public class AboutView extends LinearLayout {
|
|||||||
|
|
||||||
public AboutView(Context context, APPInfo appInfo) {
|
public AboutView(Context context, APPInfo appInfo) {
|
||||||
super(context);
|
super(context);
|
||||||
mContext = context;
|
_mContext = context;
|
||||||
|
|
||||||
setAPPInfo(appInfo);
|
setAPPInfo(appInfo);
|
||||||
initView(context);
|
initView(context);
|
||||||
@@ -72,7 +73,7 @@ public class AboutView extends LinearLayout {
|
|||||||
|
|
||||||
public AboutView(Context context, AttributeSet attrs) {
|
public AboutView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
mContext = context;
|
_mContext = context;
|
||||||
|
|
||||||
initView(context, attrs);
|
initView(context, attrs);
|
||||||
}
|
}
|
||||||
@@ -110,7 +111,7 @@ public class AboutView extends LinearLayout {
|
|||||||
mszWinBoLLServerHost = GlobalApplication.isDebuging() ? "https://yun-preivew.winboll.cc": "https://yun.winboll.cc";
|
mszWinBoLLServerHost = GlobalApplication.isDebuging() ? "https://yun-preivew.winboll.cc": "https://yun.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());
|
||||||
}
|
}
|
||||||
@@ -122,35 +123,8 @@ public class AboutView extends LinearLayout {
|
|||||||
} else {
|
} else {
|
||||||
mszGitea = "https://gitea.winboll.cc/" + mAPPInfo.getAppGitOwner() + "/" + mszAppGitName + "/src/branch/" + mAPPInfo.getAppGitAPPBranch() + "/" + mAPPInfo.getAppGitAPPSubProjectFolder();
|
mszGitea = "https://gitea.winboll.cc/" + mAPPInfo.getAppGitOwner() + "/" + mszAppGitName + "/src/branch/" + mAPPInfo.getAppGitAPPBranch() + "/" + mAPPInfo.getAppGitAPPSubProjectFolder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addView(createAboutPage());
|
||||||
if (GlobalApplication.isDebuging()) {
|
|
||||||
LayoutInflater inflater = LayoutInflater.from(mContext);
|
|
||||||
View addedView = inflater.inflate(R.layout.view_about_dev, this, false);
|
|
||||||
LinearLayout llMain = addedView.findViewById(R.id.viewaboutdevLinearLayout1);
|
|
||||||
metDevUserName = addedView.findViewById(R.id.viewaboutdevEditText1);
|
|
||||||
metDevUserPassword = addedView.findViewById(R.id.viewaboutdevEditText2);
|
|
||||||
metDevUserName.setText(PrefUtils.getString(mContext, "metDevUserName", ""));
|
|
||||||
metDevUserPassword.setText(PrefUtils.getString(mContext, "metDevUserPassword", ""));
|
|
||||||
//mDevelopHostConnectionStatusView = new DevelopHostConnectionStatusView(context);
|
|
||||||
mWinBoLLServiceStatusView = addedView.findViewById(R.id.viewaboutdevWinBoLLServiceStatusView1);
|
|
||||||
mWinBoLLServiceStatusView.setServerHost(mszWinBoLLServerHost);
|
|
||||||
mWinBoLLServiceStatusView.setAuthInfo(metDevUserName.getText().toString(), metDevUserPassword.getText().toString());
|
|
||||||
//llMain.addView(mDevelopHostConnectionStatusView);
|
|
||||||
llMain.addView(createAboutPage());
|
|
||||||
addView(addedView);
|
|
||||||
} else {
|
|
||||||
LayoutInflater inflater = LayoutInflater.from(mContext);
|
|
||||||
View addedView = inflater.inflate(R.layout.view_about_www, this, false);
|
|
||||||
LinearLayout llMain = addedView.findViewById(R.id.viewaboutwwwLinearLayout1);
|
|
||||||
//mDevelopHostConnectionStatusView = new DevelopHostConnectionStatusView(context);
|
|
||||||
mWinBoLLServiceStatusView = addedView.findViewById(R.id.viewaboutwwwWinBoLLServiceStatusView1);
|
|
||||||
mWinBoLLServiceStatusView.setServerHost(mszWinBoLLServerHost);
|
|
||||||
mWinBoLLServiceStatusView.setAuthInfo("", "");
|
|
||||||
//llMain.addView(mDevelopHostConnectionStatusView);
|
|
||||||
llMain.addView(createAboutPage());
|
|
||||||
addView(addedView);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 初始化标题栏
|
// 初始化标题栏
|
||||||
//setSubtitle(getContext().getString(R.string.text_about));
|
//setSubtitle(getContext().getString(R.string.text_about));
|
||||||
@@ -162,9 +136,9 @@ public class AboutView extends LinearLayout {
|
|||||||
String szReleaseAppVersionName = "";
|
String szReleaseAppVersionName = "";
|
||||||
try {
|
try {
|
||||||
//LogUtils.d(TAG, String.format("mContext.getPackageName() %s", mContext.getPackageName()));
|
//LogUtils.d(TAG, String.format("mContext.getPackageName() %s", mContext.getPackageName()));
|
||||||
String szSubBetaSuffix = subBetaSuffix(mContext.getPackageName());
|
String szSubBetaSuffix = subBetaSuffix(_mContext.getPackageName());
|
||||||
//LogUtils.d(TAG, String.format("szSubBetaSuffix : %s", szSubBetaSuffix));
|
//LogUtils.d(TAG, String.format("szSubBetaSuffix : %s", szSubBetaSuffix));
|
||||||
szReleaseAppVersionName = mContext.getPackageManager().getPackageInfo(szSubBetaSuffix, 0).versionName;
|
szReleaseAppVersionName = _mContext.getPackageManager().getPackageInfo(szSubBetaSuffix, 0).versionName;
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
@@ -205,7 +179,7 @@ public class AboutView extends LinearLayout {
|
|||||||
String szMsg = "Current app is :\n[ " + mszCurrentAppPackageName
|
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);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -216,22 +190,22 @@ public class AboutView extends LinearLayout {
|
|||||||
protected View createAboutPage() {
|
protected View createAboutPage() {
|
||||||
// 定义 GitWeb 按钮
|
// 定义 GitWeb 按钮
|
||||||
//
|
//
|
||||||
Element elementGitWeb = new Element(mContext.getString(R.string.gitea_home), R.drawable.ic_winboll);
|
Element elementGitWeb = new Element(_mContext.getString(R.string.gitea_home), R.drawable.ic_winboll);
|
||||||
elementGitWeb.setOnClickListener(mGitWebOnClickListener);
|
elementGitWeb.setOnClickListener(mGitWebOnClickListener);
|
||||||
// 定义检查更新按钮
|
// 定义检查更新按钮
|
||||||
//
|
//
|
||||||
Element elementAppUpdate = new Element(mContext.getString(R.string.app_update), R.drawable.ic_winboll);
|
Element elementAppUpdate = new Element(_mContext.getString(R.string.app_update), R.drawable.ic_winboll);
|
||||||
elementAppUpdate.setOnClickListener(mAppUpdateOnClickListener);
|
elementAppUpdate.setOnClickListener(mAppUpdateOnClickListener);
|
||||||
|
|
||||||
String szAppInfo = "";
|
String szAppInfo = "";
|
||||||
try {
|
try {
|
||||||
szAppInfo = mszAppName + " "
|
szAppInfo = mszAppName + " "
|
||||||
+ mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0).versionName
|
+ _mContext.getPackageManager().getPackageInfo(_mContext.getPackageName(), 0).versionName
|
||||||
+ "\n" + mszAppDescription;
|
+ "\n" + mszAppDescription;
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
AboutPage aboutPage = new AboutPage(mContext);
|
AboutPage aboutPage = new AboutPage(_mContext);
|
||||||
aboutPage.setDescription(szAppInfo)
|
aboutPage.setDescription(szAppInfo)
|
||||||
//.isRTL(false)
|
//.isRTL(false)
|
||||||
//.setCustomFont(String) // or Typeface
|
//.setCustomFont(String) // or Typeface
|
||||||
@@ -256,10 +230,10 @@ public class AboutView extends LinearLayout {
|
|||||||
//
|
//
|
||||||
Element elementAppMode;
|
Element elementAppMode;
|
||||||
if (GlobalApplication.isDebuging()) {
|
if (GlobalApplication.isDebuging()) {
|
||||||
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 {
|
||||||
elementAppMode = new Element(mContext.getString(R.string.app_debug), R.drawable.ic_winboll);
|
elementAppMode = new Element(_mContext.getString(R.string.app_debug), R.drawable.ic_winboll);
|
||||||
elementAppMode.setOnClickListener(mAppDebugOnClickListener);
|
elementAppMode.setOnClickListener(mAppDebugOnClickListener);
|
||||||
}
|
}
|
||||||
aboutPage.addItem(elementAppMode);
|
aboutPage.addItem(elementAppMode);
|
||||||
@@ -272,7 +246,7 @@ public class AboutView extends LinearLayout {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
//ToastUtils.show("mAppDebugOnClickListener");
|
//ToastUtils.show("mAppDebugOnClickListener");
|
||||||
setApp2DebugMode(mContext);
|
setApp2DebugMode(_mContext);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -280,7 +254,7 @@ public class AboutView extends LinearLayout {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
//ToastUtils.show("mAppNormalOnClickListener");
|
//ToastUtils.show("mAppNormalOnClickListener");
|
||||||
setApp2NormalMode(mContext);
|
setApp2NormalMode(_mContext);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -290,9 +264,9 @@ public class AboutView extends LinearLayout {
|
|||||||
//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);
|
||||||
GlobalApplication.setIsDebuging(true);
|
GlobalApplication.setIsDebuging(true);
|
||||||
GlobalApplication.saveDebugStatus();
|
GlobalApplication.saveDebugStatus(_mContext);
|
||||||
|
|
||||||
GlobalApplication.getWinBoLLActivityManager().finishAll();
|
WinBoLLActivityManager.getInstance().finishAll();
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -302,9 +276,9 @@ public class AboutView extends LinearLayout {
|
|||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
GlobalApplication.setIsDebuging(false);
|
GlobalApplication.setIsDebuging(false);
|
||||||
GlobalApplication.saveDebugStatus();
|
GlobalApplication.saveDebugStatus(_mContext);
|
||||||
|
|
||||||
GlobalApplication.getWinBoLLActivityManager().finishAll();
|
WinBoLLActivityManager.getInstance().finishAll();
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -313,7 +287,7 @@ public class AboutView extends LinearLayout {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(mszGitea));
|
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(mszGitea));
|
||||||
mContext.startActivity(browserIntent);
|
_mContext.startActivity(browserIntent);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -329,8 +303,8 @@ public class AboutView extends LinearLayout {
|
|||||||
String credential = "";
|
String credential = "";
|
||||||
if (GlobalApplication.isDebuging()) {
|
if (GlobalApplication.isDebuging()) {
|
||||||
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());
|
||||||
} else {
|
} else {
|
||||||
String username = "WinBoLL";
|
String username = "WinBoLL";
|
||||||
String password = "WinBoLLPowerByZhanGSKen";
|
String password = "WinBoLLPowerByZhanGSKen";
|
||||||
@@ -387,7 +361,7 @@ public class AboutView extends LinearLayout {
|
|||||||
public void onYes() {
|
public void onYes() {
|
||||||
String szUrl = mszWinBoLLServerHost + "/studio/download.php?appname=" + mszAppAPKFolderName + "&apkname=" + mszNewestAppPackageName;
|
String szUrl = mszWinBoLLServerHost + "/studio/download.php?appname=" + mszAppAPKFolderName + "&apkname=" + mszNewestAppPackageName;
|
||||||
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(szUrl));
|
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(szUrl));
|
||||||
mContext.startActivity(browserIntent);
|
_mContext.startActivity(browserIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
package cc.winboll.studio.libaes.winboll;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author ZhanGSKen<zhangsken@qq.com>
|
|
||||||
* @Date 2025/03/28 19:12:12
|
|
||||||
* @Describe 应用主要服务组件类守护进程服务组件类
|
|
||||||
*/
|
|
||||||
import android.app.Service;
|
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.ServiceConnection;
|
|
||||||
import android.os.IBinder;
|
|
||||||
import cc.winboll.studio.libaes.beans.WinBoLLClientServiceBean;
|
|
||||||
import cc.winboll.studio.libaes.winboll.AssistantService;
|
|
||||||
import cc.winboll.studio.libappbase.utils.ServiceUtils;
|
|
||||||
|
|
||||||
public class AssistantService extends Service {
|
|
||||||
|
|
||||||
public final static String TAG = "AssistantService";
|
|
||||||
|
|
||||||
WinBoLLClientServiceBean mWinBoLLServiceBean;
|
|
||||||
MyServiceConnection mMyServiceConnection;
|
|
||||||
volatile boolean mIsServiceRunning;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IBinder onBind(Intent intent) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate() {
|
|
||||||
super.onCreate();
|
|
||||||
mWinBoLLServiceBean = WinBoLLClientServiceBean.loadWinBoLLClientServiceBean(this);
|
|
||||||
if (mMyServiceConnection == null) {
|
|
||||||
mMyServiceConnection = new MyServiceConnection();
|
|
||||||
}
|
|
||||||
// 设置运行参数
|
|
||||||
mIsServiceRunning = false;
|
|
||||||
run();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
|
||||||
run();
|
|
||||||
return START_STICKY;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDestroy() {
|
|
||||||
mIsServiceRunning = false;
|
|
||||||
super.onDestroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 运行服务内容
|
|
||||||
//
|
|
||||||
void run() {
|
|
||||||
mWinBoLLServiceBean = WinBoLLClientServiceBean.loadWinBoLLClientServiceBean(this);
|
|
||||||
if (mWinBoLLServiceBean.isEnable()) {
|
|
||||||
if (mIsServiceRunning == false) {
|
|
||||||
// 设置运行状态
|
|
||||||
mIsServiceRunning = true;
|
|
||||||
// 唤醒和绑定主进程
|
|
||||||
wakeupAndBindMain();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 唤醒和绑定主进程
|
|
||||||
//
|
|
||||||
void wakeupAndBindMain() {
|
|
||||||
if (ServiceUtils.isServiceRunning(getApplicationContext(), WinBoLLClientService.class.getName()) == false) {
|
|
||||||
startForegroundService(new Intent(AssistantService.this, WinBoLLClientService.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
bindService(new Intent(AssistantService.this, WinBoLLClientService.class), mMyServiceConnection, Context.BIND_IMPORTANT);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 主进程与守护进程连接时需要用到此类
|
|
||||||
//
|
|
||||||
class MyServiceConnection implements ServiceConnection {
|
|
||||||
@Override
|
|
||||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onServiceDisconnected(ComponentName name) {
|
|
||||||
mWinBoLLServiceBean = WinBoLLClientServiceBean.loadWinBoLLClientServiceBean(AssistantService.this);
|
|
||||||
if (mWinBoLLServiceBean.isEnable()) {
|
|
||||||
wakeupAndBindMain();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
package cc.winboll.studio.libaes.winboll;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author ZhanGSKen<zhangsken@qq.com>
|
|
||||||
* @Date 2025/03/28 19:11:27
|
|
||||||
* @Describe WinBoLL UI 状态图标枚举
|
|
||||||
*/
|
|
||||||
import cc.winboll.studio.libaes.R;
|
|
||||||
|
|
||||||
public enum EWUIStatusIconDrawable {
|
|
||||||
NORMAL(0),
|
|
||||||
NEWS(1)
|
|
||||||
;
|
|
||||||
|
|
||||||
static final String TAG = "WUIStatusIconDrawable";
|
|
||||||
|
|
||||||
static String[] _mlistCNName = { "正常", "新的消息" };
|
|
||||||
|
|
||||||
private int value = 0;
|
|
||||||
private EWUIStatusIconDrawable(int value) { //必须是private的,否则编译错误
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getIconDrawableId(EWUIStatusIconDrawable drawableId) {
|
|
||||||
int res;
|
|
||||||
switch(drawableId){
|
|
||||||
case NEWS :
|
|
||||||
res = R.drawable.ic_winbollbeta;
|
|
||||||
break;
|
|
||||||
default :
|
|
||||||
res = R.drawable.ic_winboll;
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
package cc.winboll.studio.libaes.winboll;
|
|
||||||
|
|
||||||
import android.app.Service;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.IBinder;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author ZhanGSKen
|
|
||||||
* @Date 2025/05/03 19:28
|
|
||||||
*/
|
|
||||||
public class WinBoLLClientService extends Service {
|
|
||||||
|
|
||||||
public static final String TAG = "WinBoLLClientService";
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IBinder onBind(Intent intent) {
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
package cc.winboll.studio.libaes.winboll;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author ZhanGSKen
|
|
||||||
* @Date 2025/05/03 19:14
|
|
||||||
*/
|
|
||||||
public class WinBoLLServiceStatusView extends LinearLayout {
|
|
||||||
|
|
||||||
public static final String TAG = "WinBoLLServiceStatusView";
|
|
||||||
|
|
||||||
public WinBoLLServiceStatusView(Context context) {
|
|
||||||
super(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WinBoLLServiceStatusView(Context context, AttributeSet attrs) {
|
|
||||||
super(context, attrs);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WinBoLLServiceStatusView(Context context, AttributeSet attrs, int defStyleAttr) {
|
|
||||||
super(context, attrs, defStyleAttr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WinBoLLServiceStatusView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
|
||||||
super(context, attrs, defStyleAttr, defStyleRes);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void setServerHost(String szWinBoLLServerHost) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void setAuthInfo(String szDevUserName, String szDevUserPassword) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:id="@+id/viewaboutdevLinearLayout1">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center_vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="180dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="DevelopUserName :"/>
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:ems="10"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1.0"
|
|
||||||
android:id="@+id/viewaboutdevEditText1"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center_vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="180dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="DevelopUserPassword :"/>
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:inputType="textPassword"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:ems="10"
|
|
||||||
android:layout_weight="1.0"
|
|
||||||
android:id="@+id/viewaboutdevEditText2"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center_horizontal">
|
|
||||||
|
|
||||||
<cc.winboll.studio.libaes.winboll.WinBoLLServiceStatusView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/viewaboutdevWinBoLLServiceStatusView1"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:id="@+id/viewaboutwwwLinearLayout1">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center_horizontal">
|
|
||||||
|
|
||||||
<cc.winboll.studio.libaes.winboll.WinBoLLServiceStatusView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:id="@+id/viewaboutwwwWinBoLLServiceStatusView1"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
Reference in New Issue
Block a user