Merge remote-tracking branch 'origin/appbase' into mymessagemanager

This commit is contained in:
ZhanGSKen 2025-03-26 17:49:04 +08:00
commit b11f814c41
31 changed files with 469 additions and 172 deletions

View File

@ -18,15 +18,8 @@ def genVersionName(def versionName){
} }
android { android {
productFlavors { compileSdkVersion 32
beta { buildToolsVersion "32.0.0"
}
stage {
}
}
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig { defaultConfig {
applicationId "cc.winboll.studio.androiddemo" applicationId "cc.winboll.studio.androiddemo"
@ -36,7 +29,7 @@ android {
// versionName // versionName
// .winboll/winbollBuildProps.properties stageCount=0 // .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0" // Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "1.0" versionName "15.0"
if(true) { if(true) {
versionName = genVersionName("${versionName}") versionName = genVersionName("${versionName}")
} }
@ -54,21 +47,25 @@ dependencies {
api fileTree(dir: 'libs', include: ['*.jar']) api fileTree(dir: 'libs', include: ['*.jar'])
// //
implementation 'com.github.getActivity:ToastUtils:10.5' api 'com.github.getActivity:ToastUtils:10.5'
// Android // Android
// https://mvnrepository.com/artifact/com.android.support/support-v4 api 'com.android.support:appcompat-v7:28.0.0' // AppCompatActivity
implementation 'com.android.support:support-v4:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-compat // https://mvnrepository.com/artifact/com.android.support/support-compat
implementation 'com.android.support:support-compat:28.0.0' api 'com.android.support:support-compat:28.0.0' //
// https://mvnrepository.com/artifact/com.android.support/support-v4
api 'com.android.support:support-v4:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-media-compat // https://mvnrepository.com/artifact/com.android.support/support-media-compat
implementation 'com.android.support:support-media-compat:28.0.0' api 'com.android.support:support-media-compat:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-core-utils // https://mvnrepository.com/artifact/com.android.support/support-core-utils
implementation 'com.android.support:support-core-utils:28.0.0' api 'com.android.support:support-core-utils:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-core-ui // https://mvnrepository.com/artifact/com.android.support/support-core-ui
implementation 'com.android.support:support-core-ui:28.0.0' api 'com.android.support:support-core-ui:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-fragment // https://mvnrepository.com/artifact/com.android.support/support-fragment
implementation 'com.android.support:support-fragment:28.0.0' api 'com.android.support:support-fragment:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/recyclerview-v7 // https://mvnrepository.com/artifact/com.android.support/recyclerview-v7
implementation 'com.android.support:recyclerview-v7:28.0.0' api 'com.android.support:recyclerview-v7:28.0.0'
api 'cc.winboll.studio:libappbase:15.0.9'
api 'cc.winboll.studio:libapputils:15.0.11'
} }

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Mar 11 18:02:14 GMT 2025 #Wed Mar 26 07:23:51 GMT 2025
stageCount=0 stageCount=0
libraryProject= libraryProject=
baseVersion=1.0 baseVersion=15.0
publishVersion=1.0.0 publishVersion=15.0.0
buildCount=1 buildCount=11
baseBetaVersion=1.0.1 baseBetaVersion=15.0.1

View File

@ -11,7 +11,7 @@
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
android:resizeableActivity="true" android:resizeableActivity="true"
android:name=".GlobalApplication"> android:name=".App">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"

View File

@ -1,7 +1,6 @@
package cc.winboll.studio.androiddemo; package cc.winboll.studio.androiddemo;
import android.app.Activity; import android.app.Activity;
import android.app.Application;
import android.content.ClipData; import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
@ -22,6 +21,7 @@ import android.widget.HorizontalScrollView;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import cc.winboll.studio.libappbase.GlobalApplication;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.Closeable; import java.io.Closeable;
@ -39,15 +39,15 @@ import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
public class GlobalApplication extends Application { public class App extends GlobalApplication {
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper()); private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
CrashHandler.getInstance().registerGlobal(this); //CrashHandler.getInstance().registerGlobal(this);
CrashHandler.getInstance().registerPart(this); //CrashHandler.getInstance().registerPart(this);
} }
public static void write(InputStream input, OutputStream output) throws IOException { public static void write(InputStream input, OutputStream output) throws IOException {
@ -252,7 +252,7 @@ public class GlobalApplication extends Application {
private static String getKernel() { private static String getKernel() {
try { try {
return GlobalApplication.toString(new FileInputStream("/proc/version")).trim(); return App.toString(new FileInputStream("/proc/version")).trim();
} catch (Throwable e) { } catch (Throwable e) {
return e.getMessage(); return e.getMessage();
} }

View File

@ -2,14 +2,24 @@ package cc.winboll.studio.androiddemo;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import cc.winboll.studio.libappbase.LogView;
public class MainActivity extends Activity { public class MainActivity extends Activity {
LogView mLogView;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
mLogView = findViewById(R.id.logview);
mLogView.start();
} }
@Override
protected void onResume() {
super.onResume();
mLogView.start();
}
} }

View File

@ -4,7 +4,13 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center_vertical|center_horizontal"> android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center_vertical|center_horizontal"
android:layout_weight="1.0">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -14,3 +20,18 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0">
<cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text"
android:id="@+id/logview"/>
</LinearLayout>
</LinearLayout>

View File

@ -18,15 +18,8 @@ def genVersionName(def versionName){
} }
android { android {
productFlavors { compileSdkVersion 32
beta { buildToolsVersion "32.0.0"
}
stage {
}
}
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig { defaultConfig {
applicationId "cc.winboll.studio.androidxdemo" applicationId "cc.winboll.studio.androidxdemo"
@ -36,7 +29,7 @@ android {
// versionName // versionName
// .winboll/winbollBuildProps.properties stageCount=0 // .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0" // Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "1.0" versionName "15.0"
if(true) { if(true) {
versionName = genVersionName("${versionName}") versionName = genVersionName("${versionName}")
} }
@ -54,23 +47,26 @@ dependencies {
api fileTree(dir: 'libs', include: ['*.jar']) api fileTree(dir: 'libs', include: ['*.jar'])
// SSH // SSH
implementation 'com.jcraft:jsch:0.1.55' api 'com.jcraft:jsch:0.1.55'
// Html // Html
implementation 'org.jsoup:jsoup:1.13.1' api 'org.jsoup:jsoup:1.13.1'
// //
implementation 'com.google.zxing:core:3.4.1' api 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0' api 'com.journeyapps:zxing-android-embedded:3.6.0'
// //
implementation 'io.github.medyo:android-about-page:2.0.0' api 'io.github.medyo:android-about-page:2.0.0'
// //
implementation 'com.github.getActivity:ToastUtils:10.5' api 'com.github.getActivity:ToastUtils:10.5'
// //
implementation 'com.squareup.okhttp3:okhttp:4.4.1' api 'com.squareup.okhttp3:okhttp:4.4.1'
// Android // AndroidX
implementation 'androidx.appcompat:appcompat:1.1.0' api 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.viewpager:viewpager:1.0.0' api 'com.google.android.material:material:1.4.0'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0' //api 'androidx.viewpager:viewpager:1.0.0'
implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' //api 'androidx.vectordrawable:vectordrawable:1.1.0'
implementation 'androidx.fragment:fragment:1.1.0' //api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
implementation 'com.google.android.material:material:1.4.0' //api 'androidx.fragment:fragment:1.1.0'
api 'cc.winboll.studio:libappbase:15.0.9'
api 'cc.winboll.studio:libapputils:15.0.11'
} }

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Mar 11 18:25:43 GMT 2025 #Mon Mar 24 06:19:57 GMT 2025
stageCount=0 stageCount=0
libraryProject= libraryProject=
baseVersion=1.0 baseVersion=15.0
publishVersion=1.0.0 publishVersion=15.0.0
buildCount=4 buildCount=8
baseBetaVersion=1.0.1 baseBetaVersion=15.0.1

View File

@ -8,9 +8,9 @@
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/AppTheme" android:theme="@style/MyAppTheme"
android:resizeableActivity="true" android:resizeableActivity="true"
android:name=".GlobalApplication"> android:name=".App">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"

View File

@ -1,7 +1,6 @@
package cc.winboll.studio.androidxdemo; package cc.winboll.studio.androidxdemo;
import android.app.Activity; import android.app.Activity;
import android.app.Application;
import android.content.ClipData; import android.content.ClipData;
import android.content.ClipboardManager; import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
@ -22,6 +21,7 @@ import android.widget.HorizontalScrollView;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import cc.winboll.studio.libappbase.GlobalApplication;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.Closeable; import java.io.Closeable;
@ -39,15 +39,15 @@ import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
public class GlobalApplication extends Application { public class App extends GlobalApplication {
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper()); private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
CrashHandler.getInstance().registerGlobal(this); //CrashHandler.getInstance().registerGlobal(this);
CrashHandler.getInstance().registerPart(this); //CrashHandler.getInstance().registerPart(this);
} }
public static void write(InputStream input, OutputStream output) throws IOException { public static void write(InputStream input, OutputStream output) throws IOException {
@ -252,7 +252,7 @@ public class GlobalApplication extends Application {
private static String getKernel() { private static String getKernel() {
try { try {
return GlobalApplication.toString(new FileInputStream("/proc/version")).trim(); return App.toString(new FileInputStream("/proc/version")).trim();
} catch (Throwable e) { } catch (Throwable e) {
return e.getMessage(); return e.getMessage();
} }

View File

@ -3,9 +3,12 @@ package cc.winboll.studio.androidxdemo;
import android.os.Bundle; 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.libappbase.LogView;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
LogView mLogView;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -14,6 +17,12 @@ public class MainActivity extends AppCompatActivity {
Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar); Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
mLogView = findViewById(R.id.logview);
} }
@Override
protected void onResume() {
super.onResume();
mLogView.start();
}
} }

View File

@ -34,5 +34,18 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0">
<cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/logview"/>
</LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -1,7 +1,7 @@
<resources> <resources>
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item>

View File

@ -18,6 +18,7 @@ def genVersionName(def versionName){
} }
android { android {
compileSdkVersion 32 compileSdkVersion 32
buildToolsVersion "32.0.0" buildToolsVersion "32.0.0"
@ -29,7 +30,7 @@ android {
// versionName // versionName
// .winboll/winbollBuildProps.properties stageCount=0 // .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0" // Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "15.0" versionName "15.1"
if(true) { if(true) {
versionName = genVersionName("${versionName}") versionName = genVersionName("${versionName}")
} }

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Mon Mar 24 21:28:41 GMT 2025 #Wed Mar 26 15:43:21 HKT 2025
stageCount=11 stageCount=1
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.0 baseVersion=15.1
publishVersion=15.0.10 publishVersion=15.1.0
buildCount=12 buildCount=0
baseBetaVersion=15.0.11 baseBetaVersion=15.1.1

View File

@ -13,7 +13,9 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:label="@string/app_name" android:label="@string/app_name"
android:resizeableActivity="true"
android:launchMode="singleInstance" android:launchMode="singleInstance"
android:taskAffinity="cc.winboll.studio.appbase.task.main"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
@ -34,6 +36,7 @@
<service <service
android:name=".MyTileService" android:name=".MyTileService"
android:exported="true"
android:label="@string/tileservice_name" android:label="@string/tileservice_name"
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
@ -60,7 +63,8 @@
<service android:name=".services.AssistantService"/> <service android:name=".services.AssistantService"/>
<receiver android:name="cc.winboll.studio.appbase.receivers.MainReceiver"> <receiver android:name="cc.winboll.studio.appbase.receivers.MainReceiver"
android:exported="true">
<intent-filter> <intent-filter>
@ -90,7 +94,8 @@
</receiver> </receiver>
<receiver android:name=".receivers.APPNewsWidgetClickListener"> <receiver android:name=".receivers.APPNewsWidgetClickListener"
android:exported="true">
<intent-filter> <intent-filter>
@ -106,10 +111,9 @@
android:name="android.max_aspect" android:name="android.max_aspect"
android:value="4.0"/> android:value="4.0"/>
<activity android:name=".activities.NewActivity" <activity android:name=".activities.NewActivity"/>
android:label="NewActivity"
android:launchMode="singleInstance" <activity android:name=".activities.New2Activity"/>
android:exported="true"/>
</application> </application>

View File

@ -1,12 +1,16 @@
package cc.winboll.studio.appbase; package cc.winboll.studio.appbase;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityOptions;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Intent; import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.Toolbar;
import cc.winboll.studio.appbase.R; import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.activities.NewActivity; import cc.winboll.studio.appbase.activities.NewActivity;
import cc.winboll.studio.appbase.services.MainService; import cc.winboll.studio.appbase.services.MainService;
@ -14,14 +18,15 @@ import cc.winboll.studio.appbase.services.TestDemoBindService;
import cc.winboll.studio.appbase.services.TestDemoService; import cc.winboll.studio.appbase.services.TestDemoService;
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.LogView;
import cc.winboll.studio.libappbase.sos.SOS; import cc.winboll.studio.libappbase.sos.SOS;
import cc.winboll.studio.libappbase.utils.ToastUtils; import cc.winboll.studio.libappbase.utils.ToastUtils;
import cc.winboll.studio.libappbase.widgets.StatusWidget; import cc.winboll.studio.libappbase.widgets.StatusWidget;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity; import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.winboll.LogActivity;
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager; import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
import android.support.v7.widget.Toolbar;
public class MainActivity extends Activity implements IWinBollActivity { public class MainActivity extends AppCompatActivity implements IWinBollActivity {
public static final String TAG = "MainActivity"; public static final String TAG = "MainActivity";
@ -36,7 +41,7 @@ public class MainActivity extends Activity implements IWinBollActivity {
} }
Toolbar mToolbar; Toolbar mToolbar;
LogView mLogView; //LogView mLogView;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -45,18 +50,36 @@ public class MainActivity extends Activity implements IWinBollActivity {
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
mToolbar = findViewById(R.id.toolbar); mToolbar = findViewById(R.id.toolbar);
setActionBar(mToolbar); setSupportActionBar(mToolbar);
CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1); CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1);
cbIsDebugMode.setChecked(GlobalApplication.isDebuging()); cbIsDebugMode.setChecked(GlobalApplication.isDebuging());
mLogView = findViewById(R.id.activitymainLogView1); //mLogView = findViewById(R.id.activitymainLogView1);
if (GlobalApplication.isDebuging()) { // if (GlobalApplication.isDebuging()) {
mLogView.start(); // mLogView.start();
ToastUtils.show("LogView start."); // ToastUtils.show("LogView start.");
// }
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
return super.onCreateOptionsMenu(menu);
} }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
onLogActivity();
return true;
}
// 在switch语句中处理每个ID并在处理完后返回true未处理的情况返回false
return super.onOptionsItemSelected(item);
}
@Override @Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
@ -65,13 +88,6 @@ public class MainActivity extends Activity implements IWinBollActivity {
sendBroadcast(intentAPPWidget); sendBroadcast(intentAPPWidget);
} }
@Override
protected void onResume() {
LogUtils.d(TAG, "onResume");
super.onResume();
mLogView.start();
}
public void onSwitchDebugMode(View view) { public void onSwitchDebugMode(View view) {
boolean isDebuging = ((CheckBox)view).isChecked(); boolean isDebuging = ((CheckBox)view).isChecked();
GlobalApplication.setIsDebuging(isDebuging); GlobalApplication.setIsDebuging(isDebuging);
@ -159,4 +175,24 @@ public class MainActivity extends Activity implements IWinBollActivity {
public void onTestOpenNewActivity(View view) { public void onTestOpenNewActivity(View view) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, NewActivity.class); WinBollActivityManager.getInstance(this).startWinBollActivity(this, NewActivity.class);
} }
public void onLogActivity() {
Intent intent = new Intent(MainActivity.this, LogActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
// Define the bounds.
Rect bounds = new Rect(500, 300, 100, 0);
// Set the bounds as an activity option.
ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchBounds(bounds);
//Intent intent = new Intent(this, LpgActivity.class);
startActivity(intent, options.toBundle());
//WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, LogActivity.class);
}
} }

View File

@ -0,0 +1,58 @@
package cc.winboll.studio.appbase.activities;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/03/25 11:46:40
* @Describe 测试窗口2
*/
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
public class New2Activity extends Activity implements IWinBollActivity {
public static final String TAG = "New2Activity";
//LogView mLogView;
@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_new2);
// mLogView = findViewById(R.id.logview);
// mLogView.start();
}
@Override
protected void onResume() {
super.onResume();
//mLogView.start();
}
public void onCloseThisActivity(View view) {
WinBollActivityManager.getInstance(this).finish(this);
}
public void onCloseAllActivity(View view) {
WinBollActivityManager.getInstance(this).finishAll();
}
public void onNewActivity(View view) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, NewActivity.class);
}
}

View File

@ -1,20 +1,23 @@
package cc.winboll.studio.appbase.activities; package cc.winboll.studio.appbase.activities;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
/** /**
* @Author ZhanGSKen@AliYun.Com * @Author ZhanGSKen@AliYun.Com
* @Date 2025/03/25 05:04:22 * @Date 2025/03/25 05:04:22
*/ */
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
public class NewActivity extends Activity implements IWinBollActivity { public class NewActivity extends Activity implements IWinBollActivity {
public static final String TAG = "NewActivity"; public static final String TAG = "NewActivity";
//LogView mLogView;
@Override @Override
public Activity getActivity() { public Activity getActivity() {
return this; return this;
@ -29,6 +32,14 @@ public class NewActivity extends Activity implements IWinBollActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new); setContentView(R.layout.activity_new);
// mLogView = findViewById(R.id.logview);
// mLogView.start();
}
@Override
protected void onResume() {
super.onResume();
//mLogView.start();
} }
public void onCloseThisActivity(View view) { public void onCloseThisActivity(View view) {
@ -38,4 +49,8 @@ public class NewActivity extends Activity implements IWinBollActivity {
public void onCloseAllActivity(View view) { public void onCloseAllActivity(View view) {
WinBollActivityManager.getInstance(this).finishAll(); WinBollActivityManager.getInstance(this).finishAll();
} }
public void onNew2Activity(View view) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, New2Activity.class);
}
} }

View File

@ -5,7 +5,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<android.widget.Toolbar <android.support.v7.widget.Toolbar
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/toolbar"/> android:id="@+id/toolbar"/>
@ -199,10 +199,5 @@
</ScrollView> </ScrollView>
<cc.winboll.studio.libappbase.LogView
android:layout_height="300dp"
android:layout_width="match_parent"
android:id="@+id/activitymainLogView1"/>
</LinearLayout> </LinearLayout>

View File

@ -30,5 +30,14 @@
android:textAllCaps="false" android:textAllCaps="false"
android:onClick="onCloseAllActivity"/> android:onClick="onCloseAllActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New2Activity"
android:textAllCaps="false"
android:onClick="onNew2Activity"/>
</LinearLayout> </LinearLayout>

View File

@ -0,0 +1,50 @@
<?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">
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New2Activity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CloseThisActivity"
android:textAllCaps="false"
android:onClick="onCloseThisActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CloseAllActivity"
android:textAllCaps="false"
android:onClick="onCloseAllActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CloseAllActivity"
android:textAllCaps="false"
android:onClick="onCloseAllActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NewActivity"
android:textAllCaps="false"
android:onClick="onNewActivity"/>
</LinearLayout>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_log"
android:title="Log"/>
</menu>

View File

@ -18,7 +18,7 @@ buildscript {
mavenLocal() mavenLocal()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.2.1' classpath 'com.android.tools.build:gradle:7.2.1' // compileSdkVersion 32
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
} }

View File

@ -4,6 +4,7 @@ apply from: '../.winboll/winboll_lib_build.gradle'
apply from: '../.winboll/winboll_lint_build.gradle' apply from: '../.winboll/winboll_lint_build.gradle'
android { android {
compileSdkVersion 32 compileSdkVersion 32
buildToolsVersion "32.0.0" buildToolsVersion "32.0.0"
@ -21,4 +22,21 @@ android {
dependencies { dependencies {
api fileTree(dir: 'libs', include: ['*.jar']) api fileTree(dir: 'libs', include: ['*.jar'])
// Android
api 'com.android.support:appcompat-v7:28.0.0' // AppCompatActivity
// https://mvnrepository.com/artifact/com.android.support/support-compat
api 'com.android.support:support-compat:28.0.0' //
// https://mvnrepository.com/artifact/com.android.support/support-v4
api 'com.android.support:support-v4:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-media-compat
api 'com.android.support:support-media-compat:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-core-utils
api 'com.android.support:support-core-utils:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-core-ui
api 'com.android.support:support-core-ui:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-fragment
api 'com.android.support:support-fragment:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/recyclerview-v7
api 'com.android.support:recyclerview-v7:28.0.0'
} }

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Mon Mar 24 21:28:41 GMT 2025 #Wed Mar 26 15:43:05 HKT 2025
stageCount=11 stageCount=1
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.0 baseVersion=15.1
publishVersion=15.0.10 publishVersion=15.1.0
buildCount=12 buildCount=0
baseBetaVersion=15.0.11 baseBetaVersion=15.1.1

View File

@ -21,7 +21,15 @@
android:label="GlobalCrashActivity" android:label="GlobalCrashActivity"
android:launchMode="standard"/> android:launchMode="standard"/>
<activity android:name=".LogActivity"/> <activity
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
android:name="cc.winboll.studio.libappbase.winboll.LogActivity"
android:resizeableActivity="true"
android:launchMode="singleInstance"
android:taskAffinity="cc.winboll.studio.libappbase.task.log"
android:exported="true">
</activity>
<service <service
android:name=".SimpleOperateSignalCenterService" android:name=".SimpleOperateSignalCenterService"
@ -33,7 +41,8 @@
android:name=".services.TestService" android:name=".services.TestService"
android:exported="true"/> android:exported="true"/>
<receiver android:name=".receiver.MyBroadcastReceiver"> <receiver android:name=".receiver.MyBroadcastReceiver"
android:exported="true">
<intent-filter> <intent-filter>
@ -75,7 +84,8 @@
<service android:name="cc.winboll.studio.libappbase.sos.SOSCenter"/> <service android:name="cc.winboll.studio.libappbase.sos.SOSCenter"/>
<receiver android:name="cc.winboll.studio.libappbase.sos.SOSCenterServiceReceiver"> <receiver android:name="cc.winboll.studio.libappbase.sos.SOSCenterServiceReceiver"
android:exported="true">
<intent-filter> <intent-filter>

View File

@ -87,11 +87,11 @@ public class GlobalApplication extends Application {
// 初始化 Toast 框架 // 初始化 Toast 框架
ToastUtils.init(this); ToastUtils.init(this);
mWinBollActivityManager = WinBollActivityManager.getInstance(this); // mWinBollActivityManager = WinBollActivityManager.getInstance(this);
mWinBollActivityManager.setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service); // mWinBollActivityManager.setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service);
// 注册回调 // // 注册回调
mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks(mWinBollActivityManager); // mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks(mWinBollActivityManager);
registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks); // registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
} }

View File

@ -0,0 +1,48 @@
package cc.winboll.studio.libappbase.winboll;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/03/25 20:34:47
* @Describe 应用日志窗口
*/
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.view.WindowManager;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.R;
import cc.winboll.studio.libappbase.utils.ToastUtils;
public class LogActivity extends Activity implements IWinBollActivity {
public static final String TAG = "LogActivity";
LogView mLogView;
@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_log);
//ToastUtils.show("LogActivity onCreate");
mLogView = findViewById(R.id.logview);
mLogView.start();
}
@Override
protected void onResume() {
super.onResume();
mLogView.start();
}
}

View File

@ -2,15 +2,13 @@
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<cc.winboll.studio.libappbase.LogView <cc.winboll.studio.libappbase.LogView
android:orientation="horizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="match_parent"
android:layout_weight="1.0"
android:id="@+id/logview"/> android:id="@+id/logview"/>
</LinearLayout> </LinearLayout>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<style name="APPBaseTheme" parent="@android:style/Theme.Holo.Light.NoActionBar"> <style name="APPBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="themeGlobalCrashActivity">@style/GlobalCrashActivityTheme</item> <item name="themeGlobalCrashActivity">@style/GlobalCrashActivityTheme</item>
</style> </style>