添加应用背景调试模块
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Wed Nov 19 09:09:24 HKT 2025
|
#Wed Nov 19 11:20:40 GMT 2025
|
||||||
stageCount=4
|
stageCount=4
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=15.11
|
baseVersion=15.11
|
||||||
publishVersion=15.11.3
|
publishVersion=15.11.3
|
||||||
buildCount=0
|
buildCount=11
|
||||||
baseBetaVersion=15.11.4
|
baseBetaVersion=15.11.4
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<manifest
|
<manifest
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="cc.winboll.studio.powerbell">
|
package="cc.winboll.studio.powerbell">
|
||||||
|
|
||||||
<!-- 通过GPS得到精确位置 -->
|
<!-- 只能在前台获取精确的位置信息 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
<!-- 通过网络得到粗略位置 -->
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<!-- 只有在前台运行时才能获取大致位置信息 -->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||||
|
|
||||||
<!-- 拍摄照片和视频 -->
|
<!-- 拍摄照片和视频 -->
|
||||||
<uses-permission android:name="android.permission.CAMERA"/>
|
<uses-permission android:name="android.permission.CAMERA"/>
|
||||||
@@ -36,22 +37,22 @@
|
|||||||
<!-- BATTERY_STATS -->
|
<!-- BATTERY_STATS -->
|
||||||
<uses-permission android:name="android.permission.BATTERY_STATS"/>
|
<uses-permission android:name="android.permission.BATTERY_STATS"/>
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
<!-- 计算应用存储空间 -->
|
||||||
|
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>
|
||||||
|
|
||||||
<uses-feature android:name="android.hardware.camera"/>
|
<uses-feature android:name="android.hardware.camera"/>
|
||||||
|
|
||||||
<uses-feature android:name="android.hardware.camera.autofocus"/>
|
<uses-feature android:name="android.hardware.camera.autofocus"/>
|
||||||
|
|
||||||
<!-- 1. 基础应用信息读取权限(Android 11 及以下) -->
|
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>
|
||||||
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
|
|
||||||
|
|
||||||
<!-- 2. Android 11+ 应用列表读取权限(必须声明,否则无法获取全部应用) -->
|
<uses-permission
|
||||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
|
android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||||
tools:ignore="QueryAllPackagesPermission" />
|
tools:ignore="QueryAllPackagesPermission"/>
|
||||||
|
|
||||||
<!-- 3. 可选:若需读取系统应用,添加此权限(部分机型需要) -->
|
<uses-permission
|
||||||
<uses-permission android:name="android.permission.ACCESS_PACKAGE_USAGE_STATS"
|
android:name="android.permission.ACCESS_PACKAGE_USAGE_STATS"
|
||||||
tools:ignore="ProtectedPermissions" />
|
tools:ignore="ProtectedPermissions"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".App"
|
android:name=".App"
|
||||||
@@ -152,6 +153,9 @@
|
|||||||
|
|
||||||
<activity android:name="cc.winboll.studio.powerbell.activities.BatteryReportActivity"/>
|
<activity android:name="cc.winboll.studio.powerbell.activities.BatteryReportActivity"/>
|
||||||
|
|
||||||
|
<activity android:name="cc.winboll.studio.powerbell.unittest.MainUnitTestActivity"
|
||||||
|
android:exported="true"/>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package cc.winboll.studio.powerbell.unittest;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
|
import cc.winboll.studio.powerbell.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||||
|
* @Date 2025/11/19 18:16
|
||||||
|
* @Describe BackgroundViewTestFragment
|
||||||
|
*/
|
||||||
|
public class BackgroundViewTestFragment extends BaseTestFragment {
|
||||||
|
|
||||||
|
public static final String TAG = "BackgroundViewTestFragment";
|
||||||
|
|
||||||
|
View mainView;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
super.onCreateView(inflater, container, savedInstanceState);
|
||||||
|
mainView = inflater.inflate(R.layout.fragment_test_backgroundview, container, false);
|
||||||
|
|
||||||
|
ToastUtils.show(String.format("%s onCreate", TAG));
|
||||||
|
|
||||||
|
return mainView;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package cc.winboll.studio.powerbell.unittest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||||
|
* @Date 2025/11/19 18:56
|
||||||
|
* @Describe BaseTestFragment
|
||||||
|
*/
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||||
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
|
|
||||||
|
public class BaseTestFragment extends Fragment {
|
||||||
|
|
||||||
|
public static final String TAG = "BaseTestFragment";
|
||||||
|
|
||||||
|
View mainView;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
// 非调试状态就结束本线程
|
||||||
|
if (!GlobalApplication.isDebugging()) {
|
||||||
|
Thread.currentThread().destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
ToastUtils.show(String.format("%s onCreate", TAG));
|
||||||
|
|
||||||
|
return super.onCreateView(inflater, container, savedInstanceState);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package cc.winboll.studio.powerbell.unittest;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||||
|
import cc.winboll.studio.powerbell.R;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
|
import android.nfc.tech.TagTechnology;
|
||||||
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||||
|
* @Date 2025/11/19 18:04
|
||||||
|
* @Describe 单元测试启动主页窗口
|
||||||
|
*/
|
||||||
|
public class MainUnitTestActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
public static final String TAG = "MainUnitTestActivity";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
// 非调试状态就退出
|
||||||
|
if (!GlobalApplication.isDebugging()) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
setContentView(R.layout.activity_mainunittest);
|
||||||
|
|
||||||
|
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||||
|
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||||
|
fragmentTransaction.add(R.id.activitymainunittestFrameLayout1, new BackgroundViewTestFragment(), BackgroundViewTestFragment.TAG);
|
||||||
|
fragmentTransaction.commit();
|
||||||
|
|
||||||
|
ToastUtils.show(String.format("%s onCreate", TAG));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
package cc.winboll.studio.powerbell.views;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import cc.winboll.studio.powerbell.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||||
|
* @Date 2025/11/19 18:01
|
||||||
|
* @Describe 背景图片视图控件
|
||||||
|
*/
|
||||||
|
public class BackgroundView extends LinearLayout {
|
||||||
|
|
||||||
|
public static final String TAG = "BackgroundView";
|
||||||
|
|
||||||
|
Context mContext;
|
||||||
|
View mMianView;
|
||||||
|
|
||||||
|
public BackgroundView(Context context) {
|
||||||
|
super(context);
|
||||||
|
this.mContext = context;
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BackgroundView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
this.mContext = context;
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BackgroundView(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||||
|
super(context, attrs, defStyleAttr);
|
||||||
|
this.mContext = context;
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BackgroundView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||||
|
super(context, attrs, defStyleAttr, defStyleRes);
|
||||||
|
this.mContext = context;
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
void initView() {
|
||||||
|
this.mMianView = inflate(this.mContext, R.layout.view_background, this);
|
||||||
|
//addView(this.mMianView);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
15
powerbell/src/main/res/layout/activity_mainunittest.xml
Normal file
15
powerbell/src/main/res/layout/activity_mainunittest.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">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/activitymainunittestFrameLayout1"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<?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="BackgroundViewTestFragment"/>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1.0">
|
||||||
|
|
||||||
|
<cc.winboll.studio.powerbell.views.BackgroundView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
17
powerbell/src/main/res/layout/view_background.xml
Normal file
17
powerbell/src/main/res/layout/view_background.xml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?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:background="#FF7DE0D7"
|
||||||
|
android:id="@+id/viewbackground_container">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="This is BackgroundView"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
Reference in New Issue
Block a user