@@ -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<BannerAd> 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<String, Object> 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;
// }
}