diff --git a/powerbell/build.properties b/powerbell/build.properties index 52edcaf..79029b0 100644 --- a/powerbell/build.properties +++ b/powerbell/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Wed Dec 10 14:57:42 HKT 2025 +#Wed Dec 10 08:16:33 GMT 2025 stageCount=3 libraryProject= baseVersion=15.12 publishVersion=15.12.2 -buildCount=0 +buildCount=5 baseBetaVersion=15.12.3 diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java index dc31e40..c1fee1b 100644 --- a/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/MainActivity.java @@ -13,13 +13,13 @@ import android.view.Menu; import android.view.MenuItem; import android.widget.RelativeLayout; import androidx.appcompat.widget.Toolbar; + import cc.winboll.studio.libaes.activitys.AboutActivity; import cc.winboll.studio.libaes.models.APPInfo; import cc.winboll.studio.libaes.utils.AESThemeUtil; import cc.winboll.studio.libaes.utils.DevelopUtils; import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; import cc.winboll.studio.libaes.views.ADsBannerView; -import cc.winboll.studio.libappbase.LogActivity; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.powerbell.activities.BackgroundSettingsActivity; import cc.winboll.studio.powerbell.activities.BatteryReportActivity; @@ -42,38 +42,21 @@ import cc.winboll.studio.powerbell.utils.PermissionUtils; */ public class MainActivity extends WinBoLLActivity { + // ======================== 静态常量(首屏排列,统一管理)======================== public static final String TAG = "MainActivity"; - private static final int REQUEST_WRITE_STORAGE_PERMISSION = 1001; -// private static final String PRIVACY_FILE = "privacy_pfs"; -// private static final String PRIVACY_VALUE = "privacy_value";//0: 拒绝,1:赞同 -// -// private SharedPreferences mSharedPreferences; -// -// private String BANNER_POS_ID = "802e356f1726f9ff39c69308bfd6f06a"; -// private String BANNER_POS_ID_WINBOLL_BETA = "d129ee5a263911f981a6dc7a9802e3e7"; -// private String BANNER_POS_ID_WINBOLL = "4ec30efdb32271765b9a4efac902828b"; + // ======================== 成员属性(按「静态→非静态」「核心→辅助」排序)======================== + public static MainActivity _mMainActivity; // 静态Activity实例(全局调用) + private App mApplication; // 应用Application实例 + private Menu mMenu; // 顶部菜单实例 + private Fragment mCurrentShowFragment; // 当前显示的Fragment + private MainViewFragment mMainViewFragment; // 主Fragment(核心视图) + private Toolbar mToolbar; // 顶部工具栏 + private ADsBannerView mADsBannerView; // 广告Banner视图 -// private BannerAd mBannerAd; -// private List mAllBanners = new ArrayList<>(); -// -// private ViewGroup mContainer; -// -// private boolean mIsBiddingWin = true; -// -// public static final int BACKGROUND_PICTURE_REQUEST_CODE = 0; - - public static MainActivity _mMainActivity; - private App mApplication; - private Menu mMenu; - private Fragment mCurrentShowFragment; - private MainViewFragment mMainViewFragment; - private Toolbar mToolbar; - // 新增:主线程Handler,确保广告操作在主线程执行 - //private Handler mMainHandler; - ADsBannerView mADsBannerView; + // ======================== 重写父类抽象方法(优先排列,明确实现)======================== @Override public Activity getActivity() { return this; @@ -89,74 +72,132 @@ public class MainActivity extends WinBoLLActivity { LogUtils.d(TAG, "onCreate(...)"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - mADsBannerView = findViewById(R.id.adsbanner); -// mContainer = findViewById(R.id.ads_container); -// -// // 初始化主线程Handler(关键:确保广告操作在主线程执行) -// mMainHandler = new Handler(Looper.getMainLooper()); -// -// // 米盟模块:隐私协议弹窗 -// showPrivacy(); + // 初始化视图与实例 + initView(); + initInstance(); + initFragment(); - _mMainActivity = this; - mApplication = (App) getApplication(); - - // 初始化工具栏 - mToolbar = findViewById(R.id.toolbar); - setSupportActionBar(mToolbar); - mToolbar.setTitleTextAppearance(this, R.style.Toolbar_TitleText); - - // 初始化主Fragment - if (mMainViewFragment == null) { - FragmentTransaction tx = getFragmentManager().beginTransaction(); - mMainViewFragment = new MainViewFragment(); - tx.add(R.id.activitymainFrameLayout1, mMainViewFragment, MainViewFragment.TAG); - tx.commit(); - } - showFragment(mMainViewFragment); - - PermissionUtils.getInstance().checkAndRequestStoragePermission(this); + // 权限申请 + PermissionUtils.getInstance().checkAndRequestStoragePermission(this); } @Override protected void onDestroy() { super.onDestroy(); -// // 修复:释放广告资源,避免内存泄漏 -// releaseAdResources(); + // 释放广告资源 + if (mADsBannerView != null) { + mADsBannerView.releaseAdResources(); + } // 置空静态引用,避免内存泄漏 _mMainActivity = null; -// // 移除Handler回调 -// if (mMainHandler != null) { -// mMainHandler.removeCallbacksAndMessages(null); -// } - if (mADsBannerView != null) { - mADsBannerView.releaseAdResources(); - } } -// -// /** -// * 释放广告资源(关键:避免内存泄漏和空Context调用) -// */ -// private void releaseAdResources() { -// LogUtils.d(TAG, "releaseAdResources()"); -// // 销毁所有广告实例 -// if (mAllBanners != null && !mAllBanners.isEmpty()) { -// for (BannerAd ad : mAllBanners) { -// if (ad != null) { -// ad.destroy(); -// } -// } -// mAllBanners.clear(); -// } -// // 置空当前广告引用 -// mBannerAd = null; -// // 移除广告容器中的视图 -// if (mContainer != null) { -// mContainer.removeAllViews(); -// } -// } + @Override + protected void onPostCreate(Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + reloadBackground(); + } + + @Override + protected void onResume() { + super.onResume(); + reloadBackground(); + setBackgroundColor(); + // 恢复广告 + if (mADsBannerView != null) { + mADsBannerView.resumeADs(MainActivity.this); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + mMenu = menu; + // 主题菜单 + AESThemeUtil.inflateMenu(this, menu); + // 调试工具菜单(仅Debug模式显示) + if (App.isDebugging()) { + DevelopUtils.inflateMenu(this, menu); + } + // 应用核心菜单 + getMenuInflater().inflate(R.menu.toolbar_main, mMenu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int menuItemId = item.getItemId(); + // 主题切换菜单 + if (AESThemeUtil.onAppThemeItemSelected(this, item)) { + recreate(); + return true; + } + // 调试工具菜单 + if (DevelopUtils.onDevelopItemSelected(this, item)) { + LogUtils.d(TAG, String.format("onOptionsItemSelected item.getItemId() %d ", item.getItemId())); + return true; + } + // 应用核心菜单 + switch (menuItemId) { + case R.id.action_settings: + startActivity(new Intent(this, SettingsActivity.class)); + break; + case R.id.action_battery_report: + startActivity(new Intent(this, BatteryReportActivity.class)); + break; + case R.id.action_clearrecord: + startActivity(new Intent(this, ClearRecordActivity.class)); + break; + case R.id.action_changepicture: + startActivity(new Intent(this, BackgroundSettingsActivity.class)); + break; + case R.id.action_unittestactivity: + startActivity(new Intent(this, MainUnitTestActivity.class)); + break; + case R.id.action_about: + Intent intent = new Intent(getApplicationContext(), AboutActivity.class); + APPInfo appInfo = genDefaultAPPInfo(); + intent.putExtra(AboutActivity.EXTRA_APPINFO, appInfo); + WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), intent, AboutActivity.class); + break; + default: + return super.onOptionsItemSelected(item); + } + return true; + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + } + + @Override + public void onBackPressed() { + if (mCurrentShowFragment != mMainViewFragment) { + showFragment(mMainViewFragment); + } else { + moveTaskToBack(true); + } + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + return super.dispatchKeyEvent(event); + } + + @Override + public void setupToolbar() { + super.setupToolbar(); + if (getSupportActionBar() != null) { + getSupportActionBar().setDisplayHomeAsUpEnabled(false); + } + } + + + // ======================== 核心业务逻辑方法(按功能优先级排序)======================== + /** + * 显示指定Fragment(隐藏其他Fragment) + */ void showFragment(Fragment fragment) { FragmentTransaction tx = getFragmentManager().beginTransaction(); for (Fragment item : getFragmentManager().getFragments()) { @@ -167,21 +208,34 @@ public class MainActivity extends WinBoLLActivity { mCurrentShowFragment = fragment; } - @Override - protected void onPostCreate(Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - reloadBackground(); - } - + /** + * 刷新背景(全局静态调用,带生命周期校验) + */ public static void reloadBackground() { - // 修复:添加非空校验,避免Activity已销毁时调用 if (_mMainActivity != null && !_mMainActivity.isFinishing() && !_mMainActivity.isDestroyed()) { _mMainActivity.mMainViewFragment.reloadBackground(); } } /** - * 通过Uri获取文件在本地存储的真实路径 + * 设置主页面背景颜色(从BackgroundBean获取颜色值) + */ + void setBackgroundColor() { + // 生命周期校验,避免Activity销毁后操作UI + if (isFinishing() || isDestroyed()) { + return; + } + BackgroundSourceUtils utils = BackgroundSourceUtils.getInstance(this); + BackgroundBean bean = utils.getCurrentBackgroundBean(); + int nPixelColor = bean.getPixelColor(); + RelativeLayout mainLayout = findViewById(R.id.activitymainRelativeLayout1); + if (mainLayout != null) { + mainLayout.setBackgroundColor(nPixelColor); + } + } + + /** + * 通过Uri获取文件本地真实路径(兼容图片选择等场景) */ private String getRealPathFromURI(Uri contentUri) { String[] proj = {MediaStore.MediaColumns.DATA}; @@ -200,78 +254,10 @@ public class MainActivity extends WinBoLLActivity { return null; } - @Override - protected void onResume() { - super.onResume(); - reloadBackground(); - setBackgroundColor(); - if (mADsBannerView != null) { - mADsBannerView.resumeADs(MainActivity.this); - } - -// // 修复:优化广告请求逻辑(添加生命周期判断 + 主线程执行) -// if (!isFinishing() && !isDestroyed()) { -// String privacyAgreeValue = getSharedPreferences().getString(PRIVACY_VALUE, null); -// if (TextUtils.equals(privacyAgreeValue, String.valueOf(1))) { -// LogUtils.i(TAG, "已同意隐私协议,开始播放米盟广告..."); -// mMainHandler.postDelayed(new Runnable() { -// @Override -// public void run() { -// // 再次校验生命周期,避免延迟执行时Activity已销毁 -// if (!isFinishing() && !isDestroyed()) { -// fetchAd(); -// } -// } -// }, 1000); // 延迟1秒请求广告,提升页面加载体验 -// } -// -// } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - mMenu = menu; - // 主题菜单 - AESThemeUtil.inflateMenu(this, menu); - // 调试工具菜单 - if (App.isDebugging()) { - DevelopUtils.inflateMenu(this, menu); - } - // 应用其他菜单 - getMenuInflater().inflate(R.menu.toolbar_main, mMenu); - - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int menuItemId = item.getItemId(); - if (AESThemeUtil.onAppThemeItemSelected(this, item)) { - recreate(); - } if (DevelopUtils.onDevelopItemSelected(this, item)) { - LogUtils.d(TAG, String.format("onOptionsItemSelected item.getItemId() %d ", item.getItemId())); - } else if (menuItemId == R.id.action_settings) { - startActivity(new Intent(this, SettingsActivity.class)); - } else if (menuItemId == R.id.action_battery_report) { - startActivity(new Intent(this, BatteryReportActivity.class)); - } else if (menuItemId == R.id.action_clearrecord) { - startActivity(new Intent(this, ClearRecordActivity.class)); - } else if (menuItemId == R.id.action_changepicture) { - startActivity(new Intent(this, BackgroundSettingsActivity.class)); - } else if (menuItemId == R.id.action_unittestactivity) { - startActivity(new Intent(this, MainUnitTestActivity.class)); - } else if (menuItemId == R.id.action_about) { - Intent intent = new Intent(getApplicationContext(), AboutActivity.class); - APPInfo appInfo = genDefaultAPPInfo(); - intent.putExtra(AboutActivity.EXTRA_APPINFO, appInfo); - WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), intent, AboutActivity.class); - } else { - return super.onOptionsItemSelected(item); - } - return true; - } - - APPInfo genDefaultAPPInfo() { + /** + * 生成默认APP信息(用于关于页面) + */ + APPInfo genDefaultAPPInfo() { String szBranchName = "powerbell"; APPInfo appInfo = new APPInfo(); appInfo.setAppName(getString(R.string.app_name)); @@ -287,372 +273,37 @@ public class MainActivity extends WinBoLLActivity { return appInfo; } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); -// if (requestCode == BACKGROUND_PICTURE_REQUEST_CODE) { -// if (resultCode == RESULT_OK) { -// Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_SHORT).show(); -// } -// } else { -// String sz = "Unsolved requestCode = " + Integer.toString(requestCode); -// Toast.makeText(getApplicationContext(), sz, Toast.LENGTH_SHORT).show(); -// LogUtils.d(TAG, sz); -// } + + // ======================== 内部初始化辅助方法(私有,统一放在最后)======================== + /** + * 初始化视图控件(findViewById) + */ + private void initView() { + mADsBannerView = findViewById(R.id.adsbanner); + mToolbar = findViewById(R.id.toolbar); } - @Override - public void onBackPressed() { - if (mCurrentShowFragment != mMainViewFragment) { - showFragment(mMainViewFragment); - } else { - moveTaskToBack(true); - } + /** + * 初始化实例(Application、工具类等) + */ + private void initInstance() { + _mMainActivity = this; + mApplication = (App) getApplication(); + // 初始化工具栏 + setSupportActionBar(mToolbar); + mToolbar.setTitleTextAppearance(this, R.style.Toolbar_TitleText); } - void setBackgroundColor() { - // 修复:添加Activity非空校验 - if (isFinishing() || isDestroyed()) { - return; - } - BackgroundSourceUtils utils = BackgroundSourceUtils.getInstance(this); - BackgroundBean bean = utils.getCurrentBackgroundBean(); - int nPixelColor = bean.getPixelColor(); - RelativeLayout mainLayout = findViewById(R.id.activitymainRelativeLayout1); - if (mainLayout != null) { - mainLayout.setBackgroundColor(nPixelColor); + /** + * 初始化主Fragment(添加并显示) + */ + private void initFragment() { + if (mMainViewFragment == null) { + FragmentTransaction tx = getFragmentManager().beginTransaction(); + mMainViewFragment = new MainViewFragment(); + tx.add(R.id.activitymainFrameLayout1, mMainViewFragment, MainViewFragment.TAG); + tx.commit(); } + showFragment(mMainViewFragment); } -// -// /** -// * 显示广告(核心修复:传递安全的Context + 生命周期校验) -// */ -// private void showAd() { -// LogUtils.d(TAG, "showAd()"); -// // 1. 生命周期校验:避免Activity已销毁时操作UI -// if (isFinishing() || isDestroyed()) { -// LogUtils.e(TAG, "showAd: Activity is finishing or destroyed"); -// return; -// } -// // 2. 非空校验:广告实例和容器 -// if (mBannerAd == null || mContainer == null) { -// LogUtils.e(TAG, "showAd: BannerAd or Container is null"); -// return; -// } -// // 3. 创建广告容器(使用ApplicationContext避免内存泄漏) -// final FrameLayout container = new FrameLayout(getApplicationContext()); -// container.setPadding(0, 0, 0, MimoUtils.dpToPx(this, 10)); -// mContainer.addView(container, new FrameLayout.LayoutParams( -// FrameLayout.LayoutParams.MATCH_PARENT, -// FrameLayout.LayoutParams.WRAP_CONTENT -// )); -// -// if (mIsBiddingWin) { -// mBannerAd.setPrice(getPrice()); -// } -// // 4. 显示广告:传递ApplicationContext,避免Activity Context失效 -// mBannerAd.showAd(MainActivity.this, container, new BannerAd.BannerInteractionListener() { -// @Override -// public void onAdClick() { -// LogUtils.d(TAG, "onAdClick"); -// } -// -// @Override -// public void onAdShow() { -// LogUtils.d(TAG, "onAdShow"); -// } -// -// @Override -// public void onAdDismiss() { -// LogUtils.d(TAG, "onAdDismiss"); -// // 修复:移除容器时校验Activity状态 -// if (!isFinishing() && !isDestroyed() && mContainer != null) { -// mContainer.removeView(container); -// } -// } -// -// @Override -// public void onRenderSuccess() { -// LogUtils.d(TAG, "onRenderSuccess"); -// } -// -// @Override -// public void onRenderFail(int code, String msg) { -// LogUtils.e(TAG, "onRenderFail errorCode " + code + " errorMsg " + msg); -// // 修复:渲染失败时移除容器 -// if (!isFinishing() && !isDestroyed() && mContainer != null) { -// mContainer.removeView(container); -// } -// } -// }); -// } -// -// /** -// * 请求广告(核心修复:Context安全校验 + 异常捕获 + 资源管理) -// */ -// private void fetchAd() { -// LogUtils.d(TAG, "fetchAd()"); -// // 1. 双重校验:Activity未销毁 + Context非空 -// if (isFinishing() || isDestroyed() || getApplicationContext() == null) { -// LogUtils.e(TAG, "fetchAd: Invalid Context or Activity state"); -// return; -// } -// // 2. 释放之前的广告资源,避免内存泄漏 -// if (mBannerAd != null) { -// mBannerAd.destroy(); -// } -// // 3. 初始化广告(使用ApplicationContext,避免Activity Context失效) -// try { -// mBannerAd = new BannerAd(); -// mAllBanners.add(mBannerAd); -// } catch (Exception e) { -// LogUtils.e(TAG, "fetchAd: Init BannerAd failed", e); -// return; -// } -// // 4. 设置下载监听 -// mBannerAd.setDownLoadListener(new BannerAd.BannerDownloadListener() { -// @Override -// public void onDownloadStarted() { -// LogUtils.d(TAG, "onDownloadStarted"); -// } -// -// @Override -// public void onDownloadPaused() { -// LogUtils.d(TAG, "onDownloadPaused"); -// } -// -// @Override -// public void onDownloadFailed(int errorCode) { -// LogUtils.d(TAG, "onDownloadFailed, errorCode = " + errorCode); -// } -// -// @Override -// public void onDownloadFinished() { -// LogUtils.d(TAG, "onDownloadFinished"); -// } -// -// @Override -// public void onDownloadProgressUpdated(int progress) { -// LogUtils.d(TAG, "onDownloadProgressUpdated " + progress + "%"); -// } -// -// @Override -// public void onInstallFailed(int errorCode) { -// LogUtils.d(TAG, "onInstallFailed, errorCode = " + errorCode); -// } -// -// @Override -// public void onInstallStart() { -// LogUtils.d(TAG, "onInstallStart"); -// } -// -// @Override -// public void onInstallSuccess() { -// LogUtils.d(TAG, "onInstallSuccess"); -// } -// -// @Override -// public void onDownloadCancel() { -// LogUtils.d(TAG, "onDownloadCancel"); -// } -// }); -// -// // 5. 构建广告参数并请求 -// String currentAD_ID = getAD_ID(); -// LogUtils.d(TAG, String.format("currentAD_ID = %s", currentAD_ID)); -// ADParams params = new ADParams.Builder().setUpId(currentAD_ID).build(); -// mBannerAd.loadAd(params, new BannerAd.BannerLoadListener() { -// @Override -// public void onBannerAdLoadSuccess() { -// LogUtils.d(TAG, "onBannerAdLoadSuccess()"); -// // 修复:广告加载成功后校验Activity状态 -// if (!isFinishing() && !isDestroyed()) { -// showAd(); -// } -// } -// -// @Override -// public void onAdLoadFailed(int errorCode, String errorMsg) { -// LogUtils.e(TAG, "onAdLoadFailed: errorCode = " + errorCode + ", errorMsg = " + errorMsg); -// // 修复:加载失败时移除当前广告实例 -// if (mAllBanners.contains(mBannerAd)) { -// mAllBanners.remove(mBannerAd); -// } -// mBannerAd.destroy(); -// mBannerAd = null; -// } -// }); -// } -// -// /** -// * 根据当前秒数获取广告ID(原逻辑保留) -// */ -// private String getAD_ID() { -// long currentSecond = System.currentTimeMillis() / 1000; -// return (currentSecond % 2 == 0) ? BANNER_POS_ID : -// (BuildConfig.DEBUG ? BANNER_POS_ID_WINBOLL_BETA : BANNER_POS_ID_WINBOLL); -// } -// -// /** -// * 获取广告价格(原逻辑保留,添加空指针校验) -// */ -// private long getPrice() { -// if (mBannerAd == null) { -// return 0; -// } -// Map map = mBannerAd.getMediaExtraInfo(); -// if (map == null || map.isEmpty() || !map.containsKey("price")) { -// LogUtils.w(TAG, "getPrice: media extra info is null or no price key"); -// return 0; -// } -// Object priceObj = map.get("price"); -// if (priceObj instanceof Long) { -// return (Long) priceObj; -// } else if (priceObj instanceof Integer) { -// return ((Integer) priceObj).longValue(); -// } else { -// LogUtils.e(TAG, "getPrice: price type is invalid"); -// return 0; -// } -// } -// -// /** -// * 显示隐私协议弹窗(原逻辑保留,优化Context使用) -// */ -// private void showPrivacy() { -// // 校验Activity状态,避免弹窗泄露 -// if (isFinishing() || isDestroyed()) { -// return; -// } -// String privacyAgreeValue = getSharedPreferences().getString(PRIVACY_VALUE, null); -// if (TextUtils.equals(privacyAgreeValue, String.valueOf(0))) { -// LogUtils.i(TAG, "已拒绝隐私协议,广告已处于不可用状态..."); -// Toast.makeText(getApplicationContext(), "已拒绝隐私协议,广告已处于不可用状态", Toast.LENGTH_SHORT).show(); -// return; -// } -// if (TextUtils.equals(privacyAgreeValue, String.valueOf(1))) { -// LogUtils.i(TAG, "已同意隐私协议,开始初始化米盟SDK..."); -// initMimoSdk(); -// return; -// } -// LogUtils.i(TAG, "开始弹出隐私协议..."); -// AlertDialog.Builder builder = new AlertDialog.Builder(this); -// builder.setTitle("用户须知"); -// builder.setMessage("小米广告SDK隐私政策: https://dev.mi.com/distribute/doc/details?pId=1688, 请复制到浏览器查看"); -// builder.setIcon(R.drawable.ic_launcher); -// builder.setCancelable(false); // 点击对话框以外的区域不消失 -// builder.setPositiveButton("同意", new DialogInterface.OnClickListener() { -// @Override -// public void onClick(DialogInterface dialog, int which) { -// getSharedPreferences().edit() -// .putString(PRIVACY_VALUE, String.valueOf(1)) -// .apply(); -// initMimoSdk(); -// dialog.dismiss(); -// } -// }); -// builder.setNegativeButton("拒绝", new DialogInterface.OnClickListener() { -// @Override -// public void onClick(DialogInterface dialog, int which) { -// getSharedPreferences().edit() -// .putString(PRIVACY_VALUE, String.valueOf(0)) -// .apply(); -// dialog.dismiss(); -// } -// }); -// AlertDialog dialog = builder.create(); -// -// // 配置弹窗位置(底部全屏) -// Window window = dialog.getWindow(); -// if (window != null) { -// window.setGravity(Gravity.BOTTOM); -// WindowManager m = getWindowManager(); -// Display d = m.getDefaultDisplay(); -// WindowManager.LayoutParams p = window.getAttributes(); -// p.width = d.getWidth(); -// window.setAttributes(p); -// } -// dialog.show(); -// } -// -// /** -// * 初始化米盟SDK(核心修复:传递ApplicationContext + 异常捕获) -// */ -// private void initMimoSdk() { -// // 1. 安全获取ApplicationContext,避免Activity Context失效 -// Context appContext = getApplicationContext(); -// if (appContext == null) { -// Log.e(TAG, "initMimoSdk: ApplicationContext is null"); -// return; -// } -// // 2. 初始化SDK,捕获异常避免崩溃 -// try { -// MimoSdk.init(appContext, new MimoCustomController() { -// @Override -// public boolean isCanUseLocation() { -// return true; -// } -// -// @Override -// public MimoLocation getMimoLocation() { -// return null; -// } -// -// @Override -// public boolean isCanUseWifiState() { -// return true; -// } -// -// @Override -// public boolean alist() { -// return true; -// } -// }, new MimoSdk.InitCallback() { -// @Override -// public void success() { -// Log.d(TAG, "MimoSdk init success"); -// } -// -// @Override -// public void fail(int code, String msg) { -// Log.e(TAG, "MimoSdk init fail, code=" + code + ",msg=" + msg); -// } -// }); -// MimoSdk.setDebugOn(true); -// } catch (Exception e) { -// Log.e(TAG, "initMimoSdk: init failed", e); -// } -// } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - return super.dispatchKeyEvent(event); - } - - @Override - public void setupToolbar() { - super.setupToolbar(); - if (getSupportActionBar() != null) { - getSupportActionBar().setDisplayHomeAsUpEnabled(false); - } - } -// -// /** -// * 获取SharedPreferences实例(原逻辑保留,添加空指针校验) -// */ -// public SharedPreferences getSharedPreferences() { -// if (mSharedPreferences == null) { -// // 修复:使用ApplicationContext获取SharedPreferences,避免Activity Context泄露 -// Context appContext = getApplicationContext(); -// if (appContext != null) { -// mSharedPreferences = appContext.getSharedPreferences(PRIVACY_FILE, Context.MODE_PRIVATE); -// } else { -// Log.e(TAG, "getSharedPreferences: ApplicationContext is null"); -// // 降级方案:若ApplicationContext为空,使用Activity Context(仅作兼容) -// mSharedPreferences = super.getSharedPreferences(PRIVACY_FILE, Context.MODE_PRIVATE); -// } -// } -// return mSharedPreferences; -// } } - diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/fragments/MainViewFragment.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/fragments/MainViewFragment.java index eb671e4..8282f24 100644 --- a/powerbell/src/main/java/cc/winboll/studio/powerbell/fragments/MainViewFragment.java +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/fragments/MainViewFragment.java @@ -322,7 +322,7 @@ public class MainViewFragment extends Fragment { public void reloadBackground() { BackgroundSourceUtils utils = BackgroundSourceUtils.getInstance(getActivity()); - mBgSourceUtils.loadSettings(); + utils.loadSettings(); BackgroundBean bean = utils.getCurrentBackgroundBean(); mBackgroundView.loadBackgroundBean(bean); }