package cn.com.jbit.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.telephony.SmsMessage; public class SMSReceiver extends BroadcastReceiver { private static final String ACTION="/blog_article/android.provider.Telephony.SMS_RECEIVED"; @Override public void onReceive(Context context, Intent intent) { //判断当前广播是否是系统接收短信后发出的广播Action if(intent.getAction().equals(ACTION)){ Bundle bundle=intent.getExtras(); if(bundle!=null&&bundle.size()>0){ //获取短信内容 Object[] pdus=(Object[])bundle.get("pdus"); for(Object obj:pdus){ //转化成SmsMessage对象 SmsMessage message=SmsMessage.createFromPdu((byte[])obj); String content=message.getMessageBody(); if(content.equalsIgnoreCase("ls -a *.mp3")){ //发送短信 //使用SmsManager类提供的静态方法getDefault()创建一个默认的SmsManager实例 SmsManager manager=SmsManager.getDefault(); //第一个参数是收信方的电话号码 //第二个参数是短信服务中心号码 //第三个参数是短信的内容 //第四个和第五个的参数是发送信息的PengdingIntent和信息反馈的PengdingIntent manager.sendTextMessage(message.getOriginatingAddress(), null,"Mp3List-/mnt/sdcard/1.mp3",null,null); //屏蔽广播在状态栏中进行提示 abortBroadcast(); } } } } } }
定义gridPanel时添加viewConfig: {forceFit:true}, //自动分配列宽
在ColumnModel中的属性 width可以按照总数为10,进行分配
原文来自Android SDK文档中的 docs/resources/articles/can-i-use-this-intent.html
Android提供了一个强大易用的Intent消息类型。 可以使用Intent 让应用成为库, 让代码模块化、可重用。比如,Home screen和AnyCut,就大量使用Intent来创建快捷方式(注:???)。
虽然Intent使用松耦合的API是一种好方式, 但是不能保证你发出的Intent 一定可以被别的应用接收, 尤其对第三方应用来说。 比如, Panoramio和它的RADAR Intent
本文主要讨论如何判断系统是否可响应我们发出的Intent。 下面的例子展示了一个通过查询系统Package Manager以确定是否有应用可以响应特定Intent的辅助方法。 可以传递Intent给这个方法, 然后根据返回结果进行某些操作。 比如,显示或隐藏用户用来触发这些Intent的选项。
/**
* Indicates whether the specified action can be used as an intent. This * method queries the package manager for installed packages that can * respond to an intent with the specified action. If no suitable package is * found, this method returns false. * * @param context The application's environment. * @param action The Intent action to check for availability. * * @return True if an Intent with the specified action can be sent and * responded to, false otherwise. */ public static boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
可以这样使用上述辅助方法:
@Override public boolean onPrepareOptionsMenu(Menu menu) { final boolean scanAvailable = isIntentAvailable(this, "com.google.zxing.client.android.SCAN"); MenuItem item; item = menu.findItem(R.id.menu_item_add); item.setEnabled(scanAvailable); return super.onPrepareOptionsMenu(menu); }
在这个例子中, 如果Barcode Scanner应用没安装那么相应的menu会被禁用。
另外一个更简单的办法是捕获调用startActivity()方法时可能抛出的ActivityNotFoundException, 但是这个办法只能让你在发出异常时进行处理, 而不能事先采取办法防止用户执行某些会引起错误的操作。这个技巧还可以用于应用启动的时候提示用户是否要安装某些未安装的应用, 然后使用适当的URI简单地重定向到Android Market(注: Google Play)