手机来电iphone未接来电不显示不显示图标如何处理

5557人阅读
Android(141)
在我们开发一些如短消息、应用商店等应用时,会考虑在短消息的图标上加上未读短信的数量,在应用商店上加上可以升级的应用数量,这样不占太大空间还能达到提示的目的。
本节就以一个展示手机内联系人数量的例子来演示怎么在一个图标的上面加上数字的例子,也就是一个数字overlay..做过google map开发的知道overlay这个东西。
&一:你可学到
手机内依据Uri查看联系人
权限的添加
获取手机内任意一款应用的应用图标
对图形的处理,如复制,为图片加上覆盖层--数字。
使用RemoteView自定义Notification
二:开始行动
新建名为NotificationIconCount的Android Project。附件中有最终版本的项目工程
首先修改AndroidManifest.xml,加入权限&uses-permission android:name=&android.permission.READ_CONTACTS&&&/uses-permission&,因为我们要读取联系人。
修改main.xml如下,这里定义一个ImageView,勇于预览我们处理好的加上数字的图标。
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:orientation=&vertical&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
&ImageView
android:id=&@+id/icon&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:scaleType=&center&
android:adjustViewBounds=&true&/&
&/LinearLayout&&4. &先来获取手机内通讯录的图标,如果没有获取到,则使用该应用的图标.
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mImageView=(ImageView)findViewById(R.id.icon);
//优先采用联系人的图标,如果不存在则采用该应用的图标
Drawable contactI
contactIcon = getPackageManager().getApplicationIcon(&com.android.contacts&);
} catch (NameNotFoundException e) {
contactIcon=
if(contactIcon instanceof BitmapDrawable){
icon=((BitmapDrawable)contactIcon).getBitmap();
icon=getResIcon(getResources(), R.id.icon);
这里用到一个自定义的根据资源图标id获取图片的函数,很简单,代码如下:
* 根据id获取一个图片
* @param res
* @param resId
private Bitmap getResIcon(Resources res,int resId){
Drawable icon=res.getDrawable(resId);
if(icon instanceof BitmapDrawable){
BitmapDrawable bd=(BitmapDrawable)
return bd.getBitmap();
&5. &获取到图标之后就要对这个图标进行处理了,要为该图标加上联系人数量的覆盖,首先我们看获取联系人个数的函数。
* 获取联系人的个数
* @return 手里通讯录中联系人的个数
private int getContactCount(){
Cursor c=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, new String[]{ContactsContract.Contacts._COUNT}, null, null, null);
c.moveToFirst();
return c.getInt(0);
}catch(Exception e){
c.close();
这里采用Uri的方式获取联系人的cursor,然后获取个数。
&有了图标和联系人个数就可以生成带联系人个数的图标了,我们看下生成的这个函数。
* 在给定的图片的右上角加上联系人数量。数量用红色表示
* @param icon 给定的图片
* @return 带联系人数量的图片
private Bitmap generatorContactCountIcon(Bitmap icon){
//初始化画布
int iconSize=(int)getResources().getDimension(android.R.dimen.app_icon_size);
Log.d(TAG, &the icon size is &+iconSize);
Bitmap contactIcon=Bitmap.createBitmap(iconSize, iconSize, Config.ARGB_8888);
Canvas canvas=new Canvas(contactIcon);
//拷贝图片
Paint iconPaint=new Paint();
iconPaint.setDither(true);//防抖动
iconPaint.setFilterBitmap(true);//用来对Bitmap进行滤波处理,这样,当你选择Drawable时,会有抗锯齿的效果
Rect src=new Rect(0, 0, icon.getWidth(), icon.getHeight());
Rect dst=new Rect(0, 0, iconSize, iconSize);
canvas.drawBitmap(icon, src, dst, iconPaint);
//在图片上创建一个覆盖的联系人个数
int contacyCount=getContactCount();
//启用抗锯齿和使用设备的文本字距
Paint countPaint=new Paint(Paint.ANTI_ALIAS_FLAG|Paint.DEV_KERN_TEXT_FLAG);
countPaint.setColor(Color.RED);
countPaint.setTextSize(20f);
countPaint.setTypeface(Typeface.DEFAULT_BOLD);
canvas.drawText(String.valueOf(contacyCount), iconSize-18, 25, countPaint);
return contactI
注释的很详细,就不解释了,无非就是定义一个画布(Canvas),然后在上面画图标,画数字文本。
&然后我们把得到的这个处理过的Bitmap放在我们在main.xml里定义的ImageView里展示就可以看到效果了.
mImageView.setImageBitmap(contactCountIcon);
8. &我们启动应用看看效果.
&我们看到了,右上角红色的1代表我手机中有一个联系人
三:采用状态栏通知的办法展示联系人的数量
如果我们监听未读短信的数量,展示在状态栏通知了,就可以用这个方法,我这里还是以联系人的数量为例
由于Notification默认的icon字段使用的是一个一个资源的引用类型int,所以我们这里采用RemoteView的方式自定义Notification。定义RemoteView,需要一个layout,用于定义展示的Notification样式,我们新建一个notification.xml布局文件如下:
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:orientation=&horizontal&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:padding=&3dp&
&ImageView android:id=&@+id/image&
android:layout_width=&wrap_content&
android:layout_height=&fill_parent&
android:layout_marginRight=&10dp&
&TextView android:id=&@+id/text&
android:layout_width=&wrap_content&
android:layout_height=&fill_parent&
android:textColor=&#000&
&/LinearLayout&
很简单,一个ImageView和一个TextView,用于显示提示的图标和文字。
3. &要想使用Notification,我们必须获取一个Service--NotificationManager,Android中由它来管理我们的Notification,获取NotificationManager的代码如下,卸载onCreate方法里
nm=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
4. &然后紧接着我们就调用我们定义好的方法来显示通知:
showNotifacation(contactCountIcon);
5. &下面我们看一下方法showNotifacation的具体实现:
* 显示状态栏通知
* @param icon 通知内容图标
private void showNotifacation(Bitmap icon){
Notification notification=new
Notification(R.drawable.icon,&联系人数量&,System.currentTimeMillis());
//使用RemoteView自定义通知视图
RemoteViews contentView=new RemoteViews(getPackageName(), R.layout.notification);
contentView.setImageViewBitmap(R.id.image, icon);
contentView.setTextViewText(R.id.text, &图标上的红色数字表示手机中联系人的数量&);
notification.contentView=contentV
Intent notificationIntent=new Intent(this, NotificationIconActivity.class);
PendingIntent contentIntent=PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent=contentI
nm.notify(NOTIFICATION_CONTACT_ID, notification);
注释的都很详细,就不一一解释了
&最后的就是重写onDestroy,在Android销毁该Activity的时候清除我们的通知。
protected void onDestroy() {
super.onDestroy();
nm.cancel(NOTIFICATION_CONTACT_ID);
7. &运行,可以看到如下效果
&可以看到,效果已经出来了。。
四:小结和一点引申
这结的主要关键还是对图片的处理,比如这里的加上数字,当时你也可以加上其他的东西,Canvas里有很多相应的函数可以使用。。
这里说的都是应用内、状态通知等一些显示处理后图片的办法,那么有没有方法处理手机主屏幕上的图标的办法,为他们加上数字呢。比如在短信息的应用图标的右上角加上未读短信数目等,答案是有的,不过是迂回实现的,给个思路就是使用AppWidget,这个可以实现,还能动态更新,具体怎么实现,大家可以自己摸索下,这里只提供个思路,整体和这节的例子差不多,只不过呢,要做成AppWidget。。。
完整工程的下载这里有哈~ : &
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:850979次
积分:7792
积分:7792
排名:第2662名
原创:97篇
转载:105篇
评论:233条
(1)(1)(4)(15)(6)(17)(41)(14)(23)(2)(40)(2)(36)准备开学了,已经收到录取通知书的大一新生,以及准备回校的师兄师姐们,是否都在考虑...
Siri有许多功能,但是这些功能您知道吗?
Nodus 渲染图证实了 HomePod 固件中发现的一些信息。
加入LTE功能,似乎是很顺理成章的。
到目前为止,我们已经报道过不少 Apple I 拍卖的消息。
在遇到突发情况或身体突然不适的时候,这个功能就十分有用了。
看来,双方还得再“纠缠”一段时间。
苹果 App Store 本周的周免游戏,正是大家接触策略桌游的大好机会,这款游戏名叫《Tsu...
《宝箱是我的!》是PIXIO推出的一款十分有趣的塔防游戏,在游戏中玩家将扮演一位召唤...
身为足坛巨星的伊布这回成了地球队的代表球星参加到了星际球赛中,只是这个比赛和地球...
可怜的尤金,要想回个家还要经过这么多困难险阻。
如果你此前玩过 1 代《超级幻影猫》,肯定会发现 2 代比 1 代更用心的地方,如果你第...
《RAYCRISIS》是一款根据PS上的经典游戏移植到移动端的飞行射击游戏,游戏讲述的是外...
闭上眼睛,用耳朵去感受周围的环境,以及对方的一切,如果再努力一把游戏其实可以做的...
Lightning 耳机只能兼容带有 Lightning 接口的 iOS 设备,用户要用电脑听音乐只能再带...
一款专门的心率监测设备可以帮助我们获得更全面的数据。
该壁挂式产品,旨在取代传统电灯开关。
这款产品也表达了对苹果新总部 Apple Park 的致敬。
Schlage 今日发布了一款全新 WiFi 适配器,让 iOS 用户能够远程控制家中的 Schlage Se...
目前仍有不少用户在为 iPhone 存储不足的问题而苦恼。
苹果虽推出了车载系统,但支持的车型还不算多。
通过连接 WiFi,在 iOS 设备上可对 LightwaveRF 智能家居系统进行控制操作。
未接电话标志消不了怎么破
注册时间 最后登录
在线时间219 小时 UID
主题帖子人气
白苹果, 积分 955, 距离下一级还需 545 积分
更新了9的系统后有未接来电提示,已经看了,可主页还是显示未接提示,消不了
注册时间 最后登录
在线时间219 小时 UID
主题帖子人气
怎么都没人呀?
注册时间 最后登录
在线时间19 小时 UID
主题帖子人气
注册时间 最后登录
在线时间6 小时 UID
主题帖子人气
点下个人收藏,再点下最近通话
注册时间 最后登录
在线时间185 小时 UID
主题帖子人气
看了后要点一下那个号码就消失了
注册时间 最后登录
在线时间458 小时 UID
主题帖子人气
我可以说我没有看懂楼主的问题吗
注册时间 最后登录
在线时间699 小时 UID
主题帖子人气
经常有未接来电小红点出现的,明明已经点过了
注册时间 最后登录
在线时间391 小时 UID
主题帖子人气
点一下未接电话就好了
注册时间 最后登录
在线时间419 小时 UID
主题帖子人气
我也是,点了各种地方都没用,到最后回拨过去才消失,法克
注册时间 最后登录
在线时间365 小时 UID
主题帖子人气
看来不只是我用这个方法回9楼那年六月于3 小时前发表的: 我也是,点了各种地方都没用,到最后回拨过去才消失,法克......
您需要登录后才可以回帖
回帖后跳转到最后一页
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 | 沪ICP备号-1
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!

我要回帖

更多关于 魅族未接来电不显示 的文章

 

随机推荐