- 浏览: 78001 次
- 性别:
- 来自: 成都
最新评论
-
A741841403:
调整了书签位置后保存,为什么打开还是原先的位置呢?
利用福昕阅读器为PDF文档添加书签和子书签 -
Evilover3:
我现在遇到一个问题,就是我在ScrollView中放入一个Li ...
scrollview 中嵌套 edittext -
guanlijun:
...
jqGrid相关资料网页链接 -
sacredlove:
非常感谢,也帮我解决第二个无法滚动的问题
scrollview 中嵌套 edittext -
study396212327:
好东西啊,感谢lz
scrollview 中嵌套 edittext
Activity 内容:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; /** * @author mpqi 2012 */ @SuppressWarnings("deprecation") public class SmsPage extends Activity{ private final String TAG="SmsPage"; private final Uri CONTENT_URI = Uri.parse("content://mms/inbox"); //查询彩信收件箱 private final Uri CONTENT_URI_PART = Uri.parse("content://mms/part"); //彩信附件表 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout linearLayout = (LinearLayout) findViewById(R.id.content1); Cursor cursor = getContentResolver().query(CONTENT_URI, null, null,null, null); String name = ""; while (cursor.moveToNext()) { LinearLayout view = (LinearLayout) View.inflate(this, R.layout.smsitem_mms, null); TextView address = (TextView)view.findViewById(R.id.sms_address); TextView body = (TextView)view.findViewById(R.id.sms_body); TextView date = (TextView)view.findViewById(R.id.sms_date); TextView sub = (TextView)view.findViewById(R.id.sms_sub); ImageView image = (ImageView)view.findViewById(R.id.sms_image); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date time=new Date(cursor.getLong(cursor.getColumnIndex("date"))*1000);//彩信时间 int id = cursor.getInt(cursor.getColumnIndex("_id"));//彩信Id String subject = cursor.getString(cursor.getColumnIndex("sub"));//彩信主题 Cursor cAdd =null; Cursor cPhones=null; Cursor cPeople=null; Cursor cPart=null; try { //根据彩信id从addr表中查出发送人电话号码,其中外键msg_id映射pdu表的id; String selectionAdd = new String("msg_id=" + id ); Uri uriAddr = Uri.parse("content://mms/" + id + "/addr"); cAdd = getContentResolver().query(uriAddr, null, selectionAdd, null, null); //根据addr表中的电话号码在phones表中查出PERSON_ID,外键PERSON_ID映射people表中的_id if(cAdd.moveToFirst()){//该处会得到2条记录,第一条记录为发件人号码,第二条为本机号码 String number= cAdd.getString(cAdd.getColumnIndex("address")); cPhones = getContentResolver().query(Contacts.Phones.CONTENT_URI, new String[]{Contacts.Phones.PERSON_ID},Contacts.Phones.NUMBER +"=?",new String[]{number}, null); if(cPhones.getCount()>0){//根据phones表中的PERSON_ID查出 people 表中联系人的名字 while (cPhones.moveToNext()) { String pId = cPhones.getString(cPhones.getColumnIndex(Contacts.Phones.PERSON_ID)); Uri uriPeo = Uri.parse(Contacts.People.CONTENT_URI+"/"+pId); cPeople = getContentResolver().query(uriPeo, null,null,null, null); if(cPeople.getCount()>0){ String str=""; while (cPeople.moveToNext()) { if(str == ""){ str = cPeople.getString(cPeople.getColumnIndex(Contacts.People.DISPLAY_NAME)); }else{ str += ","+cPeople.getString(cPeople.getColumnIndex(Contacts.People.DISPLAY_NAME)); } } name=number+"/"+str;//如果通讯录中存在,则以 ‘电话号码/名字’ 形式显示 }else{ name=number;//如果是陌生人直接显示电话号码 } } }else{ name=number;//如果是陌生人直接显示电话号码 } } //根据彩信ID查询彩信的附件 String selectionPart = new String("mid="+id);//part表中的mid外键为pdu表中的_id cPart = getContentResolver().query(CONTENT_URI_PART, null,selectionPart,null, null); String bodyStr=""; String[] coloumns = null; String[] values = null; while(cPart.moveToNext()){ coloumns = cPart.getColumnNames(); if(values == null) values = new String[coloumns.length]; for(int i=0; i< cPart.getColumnCount(); i++){ values[i] = cPart.getString(i); } if(values[3].equals("image/jpeg") || values[3].equals("image/bmp") || values[3].equals("image/gif") || values[3].equals("image/jpg") || values[3].equals("image/png")){ //判断附件类型 image.setImageBitmap(getMmsImage(values[0]));//该处只会显示一张图片,如果有需求的朋友可以根据自己的需求将ImageView换成Gallery,修改一下方法 image.setVisibility(View.VISIBLE); }else if(values[3].equals("text/plain")){ /**该处详细描述一下 *发现一个版本问题,之前用的2.1版本的多台手机测试通过,结果用1.6的G2报异常 *经过调试发现,1.6版本part表中根本就没有"text"列,也就是values[13],所以就 *报错了,好像在1.6版本(我只测过G2,嘿嘿),就算是文本信息也是以一个附件形 *式存在_date里面也就是values[12]里面,与图片类似,但在2.1里面却不是这样存 *的,文本信息被存在了"text"这个字段中,且"_date"为null*/ if(values[12]!=null){//所以该处需判断一下,如果_date为null,可直接设置内容为"text" bodyStr=getMmsText(values[0]); }else{ bodyStr = values[13]; } } } if(!"".equals(subject) && subject != null){ try { sub.setText(new String(subject.getBytes("iso-8859-1"),"UTF-8"));//设置彩信主题的编码格式 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } if(!"".equals(bodyStr)){ body.setText(bodyStr); } address.setText(name); date.setText(format.format(time)); } catch (RuntimeException e) { Log.e(TAG, e.getMessage()); }finally{ if(cAdd != null){ cAdd.close(); } if(cPart != null){ cPart.close(); } if(cPeople != null){ cPeople.close(); } if(cPhones != null){ cPhones.close(); } } linearLayout.addView(view); } } private String getMmsText(String _id){ //读取文本附件 Uri partURI = Uri.parse("content://mms/part/" + _id ); InputStream is = null; StringBuilder sb = new StringBuilder(); try { is = getContentResolver().openInputStream(partURI); if(is!=null){ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8")); String temp = reader.readLine(); while (temp != null) { sb.append(temp); temp=reader.readLine();//在网上看到很多把InputStream转成string的文章,没有这关键的一句,几乎千遍一律的复制粘贴,该处如果不加上这句的话是会内存溢出的 } } }catch (IOException e) { e.printStackTrace(); Log.v(TAG, "读取附件异常"+e.getMessage()); }finally{ if (is != null){ try { is.close(); }catch (IOException e){ Log.v(TAG, "读取附件异常"+e.getMessage()); } } } return sb.toString(); } private Bitmap getMmsImage(String _id){ //读取图片附件 Uri partURI = Uri.parse("content://mms/part/" + _id ); //ByteArrayOutputStream baos = new ByteArrayOutputStream(); InputStream is = null; Bitmap bitmap=null; try { is = getContentResolver().openInputStream(partURI); //byte[] buffer = new byte[256]; //int len = -1; //while ((len = is.read(buffer)) != -1) { // baos.write(buffer, 0, len); //} //bitmap = BitmapFactory.decodeByteArray(baos.toByteArray(), 0, baos.toByteArray().length); bitmap = BitmapFactory.decodeStream(is); }catch (IOException e) { e.printStackTrace(); Log.v(TAG, "读取图片异常"+e.getMessage()); }finally{ if (is != null){ try { is.close(); }catch (IOException e){ Log.v(TAG, "读取图片异常"+e.getMessage()); } } } return bitmap; } }
xml布局文件见附件哦~ ^ ^
- layoutxml.rar (835 Bytes)
- 下载次数: 15
发表评论
-
hdpi,mdpi,ldpi区别
2013-08-07 03:51 1467from http://www.cnblogs.com/an ... -
Android中EditText属性
2013-08-02 00:03 808android:layout_gravity="c ... -
图片缩放、拖动、自动居中 (工具类)
2013-06-24 20:46 1229MainActivity 作为工具类activity,可 ... -
正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法
2013-02-06 11:29 1044原文出自:http://blog.csdn.net/xuny ... -
scrollview 中嵌套 edittext
2012-05-28 11:41 7919scrollview 中加入多个控件如 edittext 后会 ... -
Android SDK 源码下载
2012-05-16 16:32 1411转自:http://craining.blog.163.com ... -
android ApiDemos 引用入eclipse工作区
2012-05-11 17:51 11791 File->New->Android Proj ... -
Bitmap Drawable byte[] 三者之间的转换以及把数组存入数据库及提取数据重新组合成所需对象,如图像
2012-04-25 14:30 1370本文引自:http://www.cnblogs.com/enr ... -
Android 解析IMEI
2012-04-23 16:36 1315本文引自:Android 解析imei http://www. ... -
Android的屏幕大小和精度
2012-03-01 16:28 1058本文转载自:http://blog.csdn.net/orie ... -
关于android的HBOOT界面
2012-02-05 18:51 1941我的手机是 HTC G14 Sensation 进入H ... -
Android 自定义控件属性
2012-01-11 11:26 13891.在attr.xml中先定义好属性 <?x ... -
AndroidManifest.xml文件解析
2012-01-09 10:22 723文字转自:http://www.cnblogs.com/pil ... -
Android权限列表permission说明
2011-12-01 17:15 990P.S. 原文出处:http://www.cnblogs.co ... -
android 反编译(apk 源代码)
2011-11-25 15:48 866反编译步骤 1、把 class.dex 拷贝到 d ... -
android 资料地址
2011-11-25 15:35 876Android GSON反序列化JSON数据 http ... -
android 开发过程中遇到的exception 及其解决方案(长期记录)
2011-10-08 18:48 815java.net.SocketException: Permi ... -
Android SDK Platforms
2011-08-10 01:44 3179You can directly put them in p ... -
Official Note of Android (important part)
2011-07-21 13:47 1090This section will be updated as ... -
myeclipse8.5+win7 配置android 开发环境(非在线集成)
2011-06-02 16:20 2842一、环境变量配置 path:(android-sdk-win ...
相关推荐
下面我们将深入探讨这个“android 浏览普通彩信列表demo”的核心内容。 首先,`smsitem_mms.xml`文件通常是一个布局文件,用于定义每个彩信条目的UI结构。在这个文件中,我们可能会看到诸如`ListView`、`ImageView`...
本主题将深入探讨如何在Android应用中实现彩信发送功能,基于源码的角度来解析整个流程。 1. **彩信发送流程** 在Android中,发送彩信主要涉及` MultimediaMessageService` 和 `MMSTransport` 类。首先,你需要...
总的来说,Android 2.2后台发送彩信的源码分析涵盖了Android服务、`SmsManager` API、权限管理、多媒体数据处理等多个方面,这些都是Android开发中的重要知识点。通过学习和理解这些内容,开发者可以构建出高效且...
在Android操作系统中,短信、彩信和联系人管理是核心功能之一,对于开发者来说,深入理解这些组件的源码能够帮助他们提升应用开发的技术水平。Android 4.2版本是Google发布的一个重要的移动操作系统更新,引入了许多...
【彩信收发Demo】是基于Android 5.0系统分离出来的一个专门处理彩信(MMS)收发功能的源代码示例。这个Demo旨在帮助开发者理解和实现Android设备上的多媒体消息服务,使得应用程序能够发送和接收包含文本、图片、...
这是那个彩信包,加入到项目里就可以解决很多无法引入的问题,然后网上有一些具体的拦截方法的帖子,看下,就可以了。 没时间把我做的东西提取成一个可用的demo,不好意思,想办法做吧,如果还是没有办法,等我有...
在Android平台上,开发人员经常需要处理各种数据类型的通信,其中包括短信和彩信。彩信(MMS)是一种比传统短信(SMS)更丰富的通信方式,它允许用户发送文本、图片、音频甚至视频内容。在某些场景下,如验证码、...
1. SmsManagerService:该组件负责提供了短信/彩信的发送和接收功能,是 Android 操作系统中短信/彩信服务的核心组件。 2. MmsSender:该组件负责将短信/彩信发送到目标设备。 3. MmsManager:该组件负责管理短信/...
Android 源码目录结构是 Android 操作系统的核心组成部分,了解 Android 源码目录结构是学习和开发 Android 应用程序的基础。本文将详细介绍 Android 源码目录结构,涵盖了 Android 2.1 版本的所有目录和子目录。 ...
彩信网关程序源码是IT领域中与多媒体消息服务(MMS)相关的开发资源,主要涉及Java编程语言。在移动通信系统中,彩信网关扮演着关键角色,它负责处理、转发和管理多媒体消息,使用户能够通过手机发送和接收包含图片...
在Android操作系统中,通话、通讯录、短信和彩信是移动设备的核心功能,它们构成了用户与外界交流的主要渠道。下面将详细阐述这些知识点,并提供一个简单的Contact_Demo应用实例。 **1. 通讯录(Contacts)** ...
华为移动彩信开发包API及Demo是针对华为M77平台设计的一款开发工具,主要用于帮助开发者集成和实现移动彩信功能。在移动通信领域,彩信(Multimedia Messaging Service,简称MMS)是一种允许用户发送和接收多媒体...
以上就是Android发送彩信的核心知识点,实践中需要注意兼容性问题,因为非公开API可能会随着Android版本的更新而变化。同时,对于用户隐私和数据安全也需要额外关注,确保在合法且安全的前提下实现彩信功能。
这个压缩包文件“安卓短信彩信相关相关-一个短信应用源码.rar”包含了与Android平台上短信和彩信处理相关的源代码。源代码是开发者用来构建应用程序的基础,它提供了深入理解软件工作原理的机会。在这个特定的案例中...
在Android平台上,发送彩信(Multimedia Messaging Service, MMS)是通过Intent对象来实现的。这个过程涉及到多个步骤,包括构建MMS消息、设置消息内容、指定接收者以及触发发送操作。以下是对如何在Android中实现...
Android开发彩信程序 Android彩信程序是Android系统中的一种彩信服务,允许用户发送彩信。下面是Android开发彩信程序的相关知识点: 1. Android彩信程序的实现 Android彩信程序的实现需要使用到Android系统提供的...
本资源"Android高级应用源码-点对点发送彩信源码.zip"提供了实现这一功能的源代码示例,特别关注了通过彩信(MMS)进行P2P通信。下面将详细介绍这个源码包中的关键知识点。 1. **彩信(Multimedia Messaging ...
中国移动的MMS7彩信接入网关是通信行业中用于处理多媒体消息服务(MMS)的重要组件,它允许手机用户发送和接收包含文本、图片、音频和视频等多种媒体形式的彩信。MMS7接口是MMS系统的一个关键部分,它为开发者提供了...
《深入剖析Android 4.4源码:基于Android-19》 Android 4.4,代号KitKat,是谷歌发布的Android操作系统的一个重要版本,它在2013年推出,带来了许多新特性和性能优化。对于开发者来说,理解其源码能够深入洞悉系统...
在Android平台上,自定义彩信发送是一个常见的需求,特别是在开发具有特定功能的通讯应用时。标题"android 彩信 自定义"表明我们将讨论如何在Android系统中不依赖系统的彩信服务来实现自定义彩信的发送功能。描述...