You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SharedPreferences统计应用打开次数实现指定次数后展示桌面小部件

实现步骤
  • 第一步:初始化SharedPreferences并统计应用启动次数
    选择在应用全局初始化或者主入口Activity的onCreate()方法中完成计数逻辑,使用应用私有模式的SharedPreferences存储数据,避免外部应用读取:
    // 初始化私有SharedPreferences实例
    SharedPreferences sp = getSharedPreferences("app_runtime_data", MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    // 读取历史启动次数,默认值为0
    int historyStartCount = sp.getInt("app_start_count", 0);
    // 本次启动计数+1
    int currentCount = historyStartCount + 1;
    editor.putInt("app_start_count", currentCount);
    // 异步写入,不阻塞主线程
    editor.apply();
    
  • 第二步:增加触发标记位,判断是否满足小部件展示条件
    新增一个布尔型标记位记录是否已经触发过小部件展示请求,避免每次启动都重复触发:
    // 自定义触发小部件展示的启动次数阈值,比如设置为5次
    final int WIDGET_TRIGGER_COUNT = 5;
    // 读取是否已经触发过请求的标记,默认false
    boolean hasRequestedWidget = sp.getBoolean("has_requested_widget", false);
    
    if (!hasRequestedWidget && currentCount >= WIDGET_TRIGGER_COUNT) {
        // 执行小部件展示逻辑:可选择弹出引导提示,或调用系统API请求添加桌面小部件
        requestAddDesktopWidget();
        // 更新标记位,避免重复触发
        editor.putBoolean("has_requested_widget", true);
        editor.apply();
    }
    
  • 第三步:桌面小部件添加逻辑实现(Android原生示例)
    Android 8.0及以上系统提供了官方的小部件添加API,可直接调用唤起系统的小部件添加弹窗:
    private void requestAddDesktopWidget() {
        AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
        // 替换为你自己的AppWidgetProvider类名
        ComponentName widgetComponent = new ComponentName(this, MyCustomWidgetProvider.class);
        // 检查设备是否支持小部件固定请求
        if (widgetManager.isRequestPinAppWidgetSupported()) {
            PendingIntent successCallback = PendingIntent.getBroadcast(
                this,
                0,
                new Intent(),
                PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
            );
            widgetManager.requestPinAppWidget(widgetComponent, null, successCallback);
        } else {
            // 低版本系统弹出引导文案,提示用户手动到桌面小部件列表添加
            Toast.makeText(this, "请到桌面小部件列表添加本应用小部件", Toast.LENGTH_SHORT).show();
        }
    }
    
注意事项
  • 统计启动次数时如果需要排除后台切前台的场景,可通过注册ActivityLifecycleCallbacks全局统计应用冷启动/从后台恢复的次数,避免重复计数
  • 不要省略has_requested_widget标记位,避免用户拒绝/添加完小部件后,每次启动应用都重复弹出添加提示
  • SharedPreferences写入操作优先使用apply()异步执行,不要用同步的commit()避免阻塞主线程

内容的提问来源于stack exchange,提问作者VHS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:27:03