android应用icon右上角未读消息数字提示

本文介绍如何在Android应用中实现类似iOS的角标数字提醒功能,包括在AndroidManifest.xml中添加权限、检查与注册应用到BadgeProvider、更新角标数字等步骤,并提供了开源控件以实现更复杂的视图级别数字提醒。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.此功能是指应用图标展示的数字,例如未读短信,邮件,类似iOS应用icon

原生Android系统并不支持此功能

定制的Samsung,sony支持此功能,有各自对应不同的实现方式,以三星为例

1.在AndroidManifest.xml中加上两个权限:


<uses-permission android:name="com.sec.android.provider.badge.permission.READ" />

<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />

2.查看你的APP是否已经注册在BadgeProvider中:



Uri uri = Uri.parse("content://com.sec.badge/apps");

Cursor c = getContentResolver().query(uri, null, null, null, null);
if (c == null) {
    return;
}

try {
    if (!c.moveToFirst()) {
        return;
    }

    c.moveToPosition(-1);
    while (c.moveToNext()) {
        String pkg = c.getString(1);
        String clazz = c.getString(2);
        int badgeCount = c.getInt(3);
        Log.d("BadgeTest", "package: " + pkg + ", class: " + clazz + ", count: " + String.valueOf(cnt));
    }
} finally {
    c.close();
}

3.如果没有注册就注册上去:
ContentValues cv = new ContentValues();
cv.put("package", getPackageName());
// Name of your activity declared in the manifest as android.intent.action.MAIN.
// Must be fully qualified name as shown below
cv.put("class", "com.example.badge.activity.Test");
cv.put("badgecount", 1); // integer count you want to display

// Execute insert
getContentResolver().insert(Uri.parse("content://com.sec.badge/apps"), cv);


4.如果已经注册了就用下面方法更新角标:

ContentValues cv = new ContentValues();
cv.put("badgecount", 0);
getContentResolver().update(Uri.parse("content://com.sec.badge/apps"), cv, "package=?", new String[] {getPackageName()});


附:BadgeProvider https://github.com/shafty023/SamsungBadger

参考http://blog.youkuaiyun.com/qq549631030/article/details/38512207

2.对于应用view级别的数字提醒展示可以使用开源控件

https://github.com/jgilfelt/android-viewbadger

转载于:https://www.cnblogs.com/huangjianan/p/4233081.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值