随笔 - 3  文章 - 1  trackbacks - 0
<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

1.在Android中,SMS消息传递是由SmsManager进行处理的。可以通过静态方法SmsManager.getDefault()来获得对SmsManager的引用,如下:

    SmsManager  smsManager = SmsManager..getDefault();

2.Android中,要接收和发送SMS需要以下两个权限

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

3.SMS的发送

    1) 发送文本信息,可以使用SMS Manager 中的sendTextManager 的方法

       sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);

       参数如下:

        destinationAddress:接收方的手机号码

        scAddress:发送方的手机号码

        text:信息内容

        sentIntent:发送是否成功的回执,会在消息发送成功或者失败后触发。

        DeliveryIntent:接收是否成功的回执,当目标接收人收到你的信息后触发。

    2)跟踪和确认SMS消息的发送

        sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);

        参数sentlntent的返回码如下:

        Activity.RESULT_OK:表示发送成功

        RESULT_ERROR_GENERIC_FAILURE :表示发生了为指定的错误

        RESULT_ERROR_RADIO_OFF :表示连接的无线信号被 关闭

        RESULT_ERROR_NULL_PDU:表示PDU错误

    3)发送SMS以及监控它的发送过程是否成功的经典示例:

        String SEND_SMS_ACTION = "SENT_SMS_ACTION";
           String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
           //创建senTIntent参数
           Intent sentIntent = new Intent(SEND_SMS_ACTION);
           PendingIntent sentPI = PendingIntent.getBroadcast(getApplicationContext(), 0, sentIntent, 0);
           //创建deliveredIntent参数
           Intent deliveredIntent = new Intent(DELIVERED_SMS_ACTION);
           PendingIntent delivePI = PendingIntent.getBroadcast(getApplicationContext(), 0, deliveredIntent, 0);

         //注册广播器
           registerReceiver(new BroadcastReceiver(){

         @Override
         public void onReceive(Context context, Intent intent) {
           // TODO Auto-generated method stub
          switch (getResultCode()) {
             case Activity.RESULT_OK:
                ....
             case RESULT_ERROR_GENERIC_FAILURE:
                ....
              case RESULT_ERROR_RADIO_OFF:
                ....
              case RESULT_ERROR_NULL_PDU:
                ....
              }
            }
            },
            new IntentFilter(SEND_SMS_ACTION));
            

            //注册广播器
            registerReceiver(new BroadcastReceiver(){

              @Override
             public void onReceive(Context context, Intent intent) {
                  // TODO Auto-generated method stub
                    ....
                   }
              }
            },
            new IntentFilter(DELIVERED_SMS_ACTION));

    4)保证不超过最大的SMS信息大小

        SMS的大小一般被限制为160个字符,比它大的信息会被分割为多个小的部分。SMS Manager的divideMeaasge方法可    以接收一个字符串作为输入,并把他分割到一个消息的ArrayList中,每一个消息都比允许的最大长度小。使用sendMultipartTextM    essage可以发送消息数组。如下:

        ArrayList<String> messageArray - smsManager.divideMeaasge(myMessage);

        ArrayList<PendingIntent> sentIntents = new ArrayList<Pendinglntent>();

        for(int i = 0; i < messageArrsy.size(); i ++)

        {

            sentIntents.add(sentPI);

            smsManager.sendMultipartTextMessage(sendTo,null,messageArray,sentintent,null);

        }

    5)发送数据消息

    使用SMS Manager的sendDataMessage方法,可以经由SMS来发送二进制数据。

    sendDataMessage与sendTextMessage方法相似,前者需要额外的参数:信息到达的目的端口和由你想发送的数据所组成的一个    字节数组    

    short destinationPort = 80;

    byte[] data = [...you data ...];

    smsManager.sendDataMessage(sendTo,null,destinationPort ,data,sentPI,null);

4.SMS的监听

    SMS广播Intent包含了收到的SMS的详细信息。要提取封装在SMS广播的SmsManager对象,需要使用PDU密钥来提取一个SMS

    pdus数组,其中每一个pdu都表示一条SMS信息。

    如下:

    Bundle bundle = intent.getExtras();

    Object[] pdus = (Object[]) bundle.get("pdus");

         SmsMessage[] msgs = new SmsMessage[pdus.length];

         for (int i = 0; i < pdus.length; i++) {

         msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

        }

    每一个SMS Manager对象都包含了SMSManager信息的详细内容(电话号码,时间戳,信息体)。

    要监听到来的信息,需要使用一个监听android.provider.Telephony.SMS_RECEIVED动作串的Intent Filter 来注册一个广播接收     器。如下:

    final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED动作串的Intent Filter";    

    IntentFilter filter = new IntentFilter(SMS_RECEIVED );

    BroadcastReceiver receiver = new IncomingSMSReceiver();

    registerReceiver(receiver ,filter);
posted @ 2011-05-20 00:38 3ant 阅读(1920) | 评论 (0)编辑 收藏
Android开发带来新一轮热潮让很多移动开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用。
其中也有许许多多的开发者提供了应用开 源项 目,贡献出他们的智慧和创造力。学习开源代码是掌握技术的一
个最佳方式。下面推荐几个应用开源项目,这些项目不仅提供了优秀的创意,也可以直接掌握 Android内核的
接口使用.
1.Android团队提供的示例项目
如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上
开发。由Android的核心开发团队提供了15个优秀的示例项目,包含了游戏、图像处理、时间显示、开始菜单
快捷方式等。
地址:http://code.google.com/p/apps-for-android/
2.Remote Droid
RemoteDroid是一个Android应用,能够让用户使用自己的无线网络使用无线键盘、触摸屏操作手机。这个项
目为开发者提供了如网络连接、触摸屏手指运动等很好的样例。
地址:http://code.google.com/p/remotedroid/
3.TorProxy和Shadow
TorProxy应用实现了Android手机无线电电传通讯(TOR),和Shadow应用一起使用,可以使用手机匿名上网。
从该项目源代码中,可以 掌握socket连接、管理cookie等方法。
地址:http://www.cl.cam.ac.uk/research/dtg/code/svn/android-tor/
4、 Android SMSPopup
SMSPopup可以截获短信内容显示在一个泡泡形状的窗口中。从这个项目中可以掌握到如何使用内置的短信
SMS接口。
地址:http://code.google.com/p/android-smspopup/
5、 Standup Timer
Standup Timer应用用于控制站立会议时间,类似秒表倒计时,可以提醒每个人的讲话时间已到,从而保证每
个与会者使用时间一样。从该项目的代码中,可以学会如何 使用时间函数。另外,这个项目的代码是采用视图
view、模型model严格分离的设计思路。
地址:http://github.com/jwood/standup-timer
6、 Foursquare
http://www.javaeye.com/news
Foursquare应用主要分为两个模块:API(com.joelapenna.foursquare)和界面前端 (com.joelapenna.foursquared)两部分。从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。
地址:http://code.google.com/p/foursquared/
7、 Pedometer
Pedometer应用用于记录你每天走路步[]数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同
的技术:加速器交互、语音更新、后台运行服 务等。
地址:http://code.google.com/p/pedometer/
8、 OpenSudoku-android
OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据,以及如何和一
个网站交互等技术。
地址:http://code.google.com/p/opensudoku-android
9、 ConnectBot
ConnectBot是Android平台的一个客户端安全壳应用。从该项目代码中,可以学习到很多Android安全方面的
内容,这些是你在开发应用 时经常需要考虑的安全问题。
地址:http://code.google.com/p/connectbot/
10、 WordPress的Android应用
当然在最后不能不提Wordpress的Android应用了,这是Wordpress官方开发团队提供的一个项目。从代码中
可以学习到XMLRPC调 用(当然还有更多的优秀内容)。
地址:http://android.svn.wordpress.org/trunk/

注:该文章转自:http://www.opda.cn/2010/08/23/top-10-open-source-android-apps/
posted @ 2011-05-19 14:57 3ant 阅读(363) | 评论 (0)编辑 收藏
一、编码设置:
1:对工作区workspace进行编码设置,window-->preferences 设置 如下图:

-------------------------------------
2:对工程project进行编码设置 工程名 右键 properties 设置如下图:
-------------------------------------
3:但此时你会发现设置了这两情况之后还是会出现乱码,因为上面这两种方式只是对text类型的文件编码进行了设置。其他的(如jsp)等的编码还是默认的(可能与workspace和project所设置的编码不一样,如ISO-8859-1)。此时,我们需要对内容类型(ContentType)下的各种类型的文件(如jsp、html...)进行设置,window-->preferences 如下图:

-------------------------------------

二:eclipse 方法自动提示设置:
window-->


三:相同变量名高亮显示设置:
window-->


四:文件默认打开方式设置:
window-->


Over.


posted @ 2010-01-14 10:58 3ant 阅读(968) | 评论 (0)编辑 收藏
仅列出标题  

没有热爱,何来成就