开发者平台 > 详情

应用图标动态角标显示发布时间:2015.10.22 03:10

ZUI的系统桌面可以在应用图标上显示一个漂亮的角标。应用程序只需要调用开放的系统接口API就可以添加,删除角标,以及动态地改变要显示的角标数据,以便及时地通知用户有新的内容。



角标管理流程介绍:

系统桌面和应用程序使用自定义的ContentProvider来实现对应用程序角标数据的管理,包括插入、更新、删除、查找等操作。具体流程如下:

1.         应用程序调用ContentProvider 的接口来通知应用程序角标数据变化;

2.         ContentProvider 更新应用程序角标数据,并通知系统桌面应用;

3.         系统桌面应用对应用程序图标进行角标更新。

 

接口使用说明:

应用程序实现角标显示的步骤:

1.         声明权限

<uses-permission android:name="android.permission.READ_APP_BADGE"/> 


2.         定义ContentProvider的uri

private final Uri CONTENT_URI = Uri.parse("content://" + "com.android.badge" + "/" + "badge"); 


3.         写入对应的角标需要显示的数值,示例代码如下: 

private void testreddot(Context context, int counts){       

Bundle extra = new Bundle();

ArrayList<String> ids = new ArrayList<String>();

// 以列表形式传递快捷方式id,可以添加多个快捷方式id

ids.add("custom_id_1");

ids.add("custom_id_2");

………………..

extra.putStringArrayList("app_shortcut_custom_id", ids);

extra.putInt("app_badge_count", counts);

Bundle b = null;

b = context.getContentResolver().call(CONTENT_URI,"setAppBadgeCount", null, extra);

boolean result = false;

if (b != null) {

result = true;

}else {

result = false;  

}  

return;

} 

说明:

示例中ids这个参数可以为空或者“null”表示对主图标进行角标标记;custom_id_1等id值,是应用自定义的对应快捷方式的id,如果应用有快捷方式在桌面创建需要将此id传给桌面在后面将有说明。 

这个例子中如果有多个id,那么表示多个id的角标值是一样的为counts。如果每个id有不同的值,需要分别循环调用并设置值,也就是一个id和对应counts值调用一次此接口。如果ids为null将更新主图标。 


4.         对需要在桌面创建快捷方式并有角标的应用需要在创建快捷方式的一个示例如下: 

Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");

shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name));

// 快捷方式的名称

shortcut.putExtra("duplicate", false); // 不允许重复创建

 

Intent shortcutIntent = new Intent();

shortcutIntent.setClassName("com.example","com.example.MainActivity");

// com.example是包名,com.example.MainActivity是启动页类名

shortcutIntent.setPackage(packageName);

 

shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);

 

ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); // 快捷方式的图标

shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);

shortcut.putExtra("app_shortcut_custom_id","example_custom_id");

// 以extra参数的形式传递shortcutCustomId

sendBroadcast(shortcut);

//系统接收到该广播,需将shortcutCustomId与图标的对应关系存储到数据库      

说明:setClassName不是必须的。

 

接口使用示例

1.         仅仅对主图标进行角标设置

     参数:

     context 应用上下文;

     counts 主图标的角标数量。

 

2.         快捷方式角标设置

     参数:

     context 应用上下文;

     counts 快捷方式的角标数量;

     custom_id_1,custom_id_2 应用自己定义的值,这个值和创建快捷方式发送的广播中intent的值一致。

 

注意: 应用使用SDK后需要同时打开相关设置项才能生效

           设置 > 通知和状态栏 > 应用角标管理 在应用列表里打开您的应用的角标使用权限。


适用版本: ZUI 1.1 以上



15条评论

zd5085eb | 2017-10-31 17:38:07

My phone is not updating plss update the mobile

BBBOND | 2016-12-23 18:26:18

这代码排版没谁了。。。文档一定要清晰啊,这样接入的app才会多

123456 | 2016-12-13 22:35:06

1

zd532e4a | 2016-11-16 15:32:18

技术贴必须顶!

大官人 | 2016-08-29 10:43:25

说没用的,其实还是最后一句话没弄 注意: 应用使用SDK后需要同时打开相关设置项才能生效。 设置 &amp;gt; 通知和状态栏 &amp;gt; 应用角标管理 在应用列表里打开您的应用的角标使用权限。

zd0621bf | 2016-05-23 12:01:52

看这个文档真心好吃力,看来联想的开发水平还是有点戳啊