- 浏览: 341447 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
secally:
楼主可以上传个例子吗,谢谢,我咋跑不起来,,eclipse不是 ...
Android自动打包、签名、优化、上传ANT脚本 -
secally:
请问下执行命令是啥,ant release 还是?麻烦指教谢谢 ...
Android自动打包、签名、优化、上传ANT脚本 -
trp1022:
好牛啊
程序员不能不通文史 -
sunny78117:
谢谢,写得好
Android bitmap优化 -
futurebp:
这是什么类型的脚本啊?
Android自动打包、签名、优化、上传ANT脚本
android下发送中文短消息
在android中用直接使用smsManager.sendTextMessage()方法发送中文或其它unicode字符会显示不正确。 目前来说想正确发送中文,需要自己构造PDU,然后在JAVA中用反射调用SmsManager的private sendRawPdu方法来实现。 参考:http://www.android123.com.cn/androidkaifa/180.html
上文中只说了PDU构造实现原理,具体怎么使用没有涉及。俺这再补一把,直接贴出代码。其实android本身SDK就有相应方法以UCS2编码发送,只是默认不会调用。 以下代码G1下测试通过
public class SmsHelper { public static final int MAX_USER_DATA_BYTES = 140; private Context mContext; public SmsHelper(Context c) { mContext = c; } public void sendUnicodeMessage(String phone, String text) { SmsManager smsManager = SmsManager.getDefault(); Class clazz = smsManager.getClass(); try { Class[] types = new Class[4]; types[0] = byte[].class; types[1] = byte[].class; types[2] = Class.forName("android.app.PendingIntent"); types[3] = Class.forName("android.app.PendingIntent"); Object[] params = new Object[4]; params[0] = null; params[1] = getSubmitPdu(null, phone, text).encodedMessage; params[2] = PendingIntent .getBroadcast(mContext, 0, new Intent(), 0); // params[2] = null; params[3] = null; Method m = clazz.getDeclaredMethod("sendRawPdu", types); m.setAccessible(true); m.invoke(smsManager, params); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } public static SubmitPdu getSubmitPdu(String scAddress, String destinationAddress, String message) { if (message == null || destinationAddress == null) { return null; } SubmitPdu ret = new SubmitPdu(); byte mtiByte = (byte) (0x01 | 0x00); ByteArrayOutputStream bo = getSubmitPduHead(scAddress, destinationAddress, mtiByte, false, ret); byte[] userData, textPart; // Encoding to the 7-bit alphabet failed. Let's see if we can // send it as a UCS-2 encoded message try { textPart = message.getBytes("utf-16be"); } catch (UnsupportedEncodingException uex) { uex.printStackTrace(); return null; } userData = textPart; if (userData.length > MAX_USER_DATA_BYTES) { // Message too long return null; } // TP-Data-Coding-Scheme // Class 3, UCS-2 encoding, uncompressed bo.write(0x0b); // (no TP-Validity-Period) // TP-UDL bo.write(userData.length); bo.write(userData, 0, userData.length); ret.encodedMessage = bo.toByteArray(); return ret; } private static ByteArrayOutputStream getSubmitPduHead(String scAddress, String destinationAddress, byte mtiByte, boolean statusReportRequested, SubmitPdu ret) { ByteArrayOutputStream bo = new ByteArrayOutputStream( MAX_USER_DATA_BYTES + 40); // SMSC address with length octet, or 0 if (scAddress == null) { ret.encodedScAddress = null; } else { ret.encodedScAddress = PhoneNumberUtils .networkPortionToCalledPartyBCDWithLength(scAddress); } // TP-Message-Type-Indicator (and friends) if (statusReportRequested) { // Set TP-Status-Report-Request bit. mtiByte |= 0x20; } bo.write(mtiByte); // space for TP-Message-Reference bo.write(0); byte[] daBytes; daBytes = PhoneNumberUtils .networkPortionToCalledPartyBCD(destinationAddress); // destination address length in BCD digits, ignoring TON byte and pad // TODO Should be better. bo.write((daBytes.length - 1) * 2 - ((daBytes[daBytes.length - 1] & 0xf0) == 0xf0 ? 1 : 0)); // destination address bo.write(daBytes, 0, daBytes.length); // TP-Protocol-Identifier bo.write(0); return bo; } }
发表评论
-
抓取Android WebView截屏
2011-08-19 21:33 7669一般使用setDrawingCacheEnabled(true ... -
Android bitmap优化
2011-08-11 17:02 5990直接使用ImageView显示 ... -
Android模拟器更改分辨率后 无法取得分辨率问题
2011-05-11 21:06 2861在PC上更改模拟器分辨率为480*800 (如果你的PC界面 ... -
获取屏幕硬件分辨率方法 收藏
2011-05-11 16:28 1923TextView tv=(TextVie ... -
Bytecode for the Dalvik VM
2011-05-10 22:35 1370http://www.netmite.com/android/ ... -
Android DEX反编译后部分代码解析
2011-05-10 22:07 3947一个private 方法 private Stri ... -
反编译并且修改Android APK包
2011-05-10 16:57 3138為了某個實驗的動機,我們評估反編譯 Android ... -
Android Ant编译时候进行混淆
2010-10-18 13:49 3835版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
自定义Ant Task
2010-09-13 17:58 3001版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
Android自动打包、签名、优化、上传ANT脚本
2010-07-26 16:51 13994版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
Android自定义含有CheckBox的Adapter遇到的问题
2010-06-23 13:48 4130版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
QR code类库
2010-06-03 23:11 2337Google code发现的好东西。 QR code 类库 ... -
Android QQ,一个WEBOS APP诞生!!(两个QQ对比!)
2010-04-10 12:05 1880请看这个大哥的言论 http://linuxtoy.or ... -
Android 、BlackBerry 文本对齐方式对比
2010-02-22 13:11 1816版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
教你如何开关Android的APN网络
2010-01-08 11:36 6060版权所有,转载请注明来自Mobile Developer (h ... -
史上最强NDK入门项目实战
2009-10-10 13:29 2691以下内容Sinfrancis版权所有,专注请注明来自 htt ... -
使用TimerTask控制ProgressBar
2009-10-10 13:21 1128以下内容Sinfrancis版权所有,专注请注明来自 htt ... -
自定义List布局
2009-10-10 13:19 1936以下内容Sinfrancis版权所有,专注请注明来自 htt ... -
重画Progressbar的进度
2009-10-10 13:15 1944以下内容Sinfrancis版权所有,专注请注明来自 htt ... -
谈谈Android中文短信的实现
2009-10-10 13:13 2184似 乎Google在推出G1时 ...
相关推荐
北斗短报文服务基于卫星通信技术,允许用户发送和接收短消息,通常长度在120个汉字以内。与传统的短信服务不同,北斗短报文服务不受地面基站的限制,可以覆盖全球范围。在Android设备上,需要特定的硬件模块,如北斗...
在Android平台上发送中文短信是一项常见的任务,特别是在开发与通信相关的应用程序时。然而,随着Android系统的更新,一些早期的方法可能不再适用。本篇文章将探讨在Android 1.6之后如何有效地发送包含中文字符的...
NFC(近场通信)是一种短程无线技术,需要在 4 厘米或更短的距离下初始化连接。NFC 允许在 NFC 标签和 Android 设备之间或两个 Android 设备之间共享小数据量的负载。NFC 标签具有复杂的分类,简单的 NFC 标签只提供...
《Android高级编程》是一本专为想要深入理解Android开发的程序员设计的中文版教程。这本书旨在帮助读者掌握Android系统的高级特性和开发技巧,是Android入门者的理想读物。通过本书,开发者可以提升自己的技能,从...
2. **AnFetion**:这是中国移动推出的Android版飞信客户端,支持GPRS和WiFi连接,能够快速稳定地进行消息收发。AnFetion的界面设计与Symbian版飞信相似,操作简单直观。需要注意的是,目前版本还不支持飞信群组显示...
一条标准的短信息在中文环境下大约占70字节(包括标点符号),而在英文环境下则可达160字节。这一限制源于早期GSM标准的规定,对信息长度进行了标准化,以确保不同设备间的信息兼容性和传输效率。 #### 6. Android...
Android_API中文帮助文档是开发者在进行Android应用开发时的重要参考资料,它详尽地阐述了Android应用程序接口(API)的各种功能和用法。这份文档通常包括类库、方法、接口、枚举、注解等各类编程元素的说明,帮助...
一条标准短信息的长度受制于GSM编码标准,中文短信息最长可达70字符(包括标点),英文短信息则为160字符。这一限制源于早期网络的带宽和处理能力,但随着技术进步,现代通信协议已能支持更长的信息长度。 #### 6. ...
4. **短信长度**:一条最长的短信息,英文为160个字符(或160个字节),中文通常为70个字符(包括标点),也是160个字节。 5. **内存回收**:在Java(包括Android)中,内存回收是由垃圾收集器自动完成的,程序员不...
标准的短信息(SMS)长度限制为160个英文字符或70个中文字符(含标点符号),这是由于早期的GSM标准规定的限制。这一限制在现代智能手机中仍然存在,尽管现在可以通过多条短信拼接的方式发送更长的信息,但每条短信...
本资料“电子政务-借助流动无线电网的短信息业务发送基本字元构成的亚洲文字”着重探讨了如何利用移动通信技术,尤其是短信息服务(SMS),来传递和处理亚洲文字。 亚洲文字,包括汉字、日文、韩文等多种文字系统,...
- **中文短信息**:最多包含70个字符(包括标点符号),每个字符占用2个字节,总共140字节。 - **英文短信息**:最多包含160个字符,每个字符占用1个字节,总共160字节。 这是因为英文字母采用7位ASCII编码,而汉字...
- Handler/Looper/Message机制,用于在主线程和工作线程之间发送消息,处理耗时操作。 - 使用IntentService在后台执行任务,自动管理生命周期,避免内存泄漏。 7. **权限管理** - Android应用需要在`...
### Android开发指南中文版知识点详解 #### 应用程序基础 - Application Fundamentals 在Android开发过程中,理解应用程序的基础概念至关重要。这些基础知识不仅帮助开发者构建稳定可靠的应用程序,还能够优化性能...
- `getMinDelay()`:获取传感器的最小报告延迟,即传感器可以在多短的时间间隔内发送事件。 步骤四:显示传感器信息 将获取到的传感器信息(如名称、类型、范围等)展示在UI上,可以使用ListView或者RecyclerView...
- **Applications(应用程序层)**:这一层包含了Android平台自带的一系列核心应用程序,例如Email客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。这些应用程序都是使用Java语言编写的。 - **...