1-发送短信页面
Intent intent = new Intent();
// [5]匹配过滤器
//通过查看系统源代码 找到如下的过滤器
// (打开手机自带应用--点击进入会打印相应的日志信息--在text中会有跳转的相应页面,我们就可以找到相应的源码,只要是页面就会在清单文件中有相应的配置)
// 要看具体匹配哪一个意图过滤器,看传递的数据--mimeType="text/plain
/*
* <intent-filter> <action
* android:name="android.intent.action.SEND" /> <category
* android:name="android.intent.category.DEFAULT" /> <data
* android:mimeType="text/plain" /> </intent-filter>
*/
intent.setAction("android.intent.action.SEND");
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("text/plain");
// [5.1]把选中条目的数据传递到另外一个页面 (key(看源码,系统是如何取的),value())
// 传的是String,到那边查的时候也是String,---getStringExtra
intent.putExtra("sms_body", data);
// [6]开启意图
startActivity(intent);
谷歌api发送短信
//[1] SmsManager.getDefault()获取短信发送的管理者 通过查看文档得知 通过调用他的静态方法获取
SmsManager smsManager = SmsManager.getDefault();
//[2] divideMessage切割短信—返回集合—遍历
ArrayList<String> divideMessage = smsManager.divideMessage(content);
for (String div : divideMessage) {
//[3]发送短信
//参数1:发送的地址(给谁发)
//参数2:服务中心的号码(null表示默认的)
//参数3:发送发送的内容
//参数4:如果不为null就是个延期的广播-发送成功
//参数5:如果不为null就是个延期的广播-发送失败
//sendTextMessage有字数限制,需要切割
smsManager.sendTextMessage(number, null, div, null, null);
}
//权限
<uses-permission android:name="android.permission.SEND_SMS"/>
2-IP拨号
<!-- 配置广播接收者 -->
<receiver android:name="com.kailing.ipdail.OutGoingCallReceiver">
<intent-filter >
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
public class OutGoingCallReceiver extends BroadcastReceiver {
//当接收到外拨电话的时候执行
@Override
public void onReceive(Context context, Intent intent) {
String ipnumber = sp.getString("ipnumber", "");
//[1]获取当前拨打的号码 获取发送广播携带的数据
String currentNumber = getResultData();
//[2]在当前要拨打的号码前面加上17951
if (currentNumber.startsWith("0")) {
setResultData(ipnumber+currentNumber);
}
}
}
权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
3-SD卡状态监听
<receiver android:name="com.kailing.sdcardstatelistener.SdcardReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<data android:scheme="file"></data>
</intent-filter>
</receiver>
public class SdcardReceiver extends BroadcastReceiver {
//当挂载sd卡 或者卸载sd卡的时候执行
@Override
public void onReceive(Context context, Intent intent) {
//[1] getAction()获取一下当前广播的事件类型
String action = intent.getAction();
//[2]判断一下当前的类型
if ("android.intent.action.MEDIA_MOUNTED".equals(action)) {
System.out.println("挂载了~~~~");
} else if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) {
System.out.println("卸载了~~~++~~");
}
}
}
4-开机启动广播接收
<receiver android:name="com.kailing.money.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
5-应用安装和卸载广播接收
<receiver android:name="com.kailing.appstate.AppStateReceiver">
<intent-filter >
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
public class AppStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//[1] getAction()获取当前广播的事件类型
String action = intent.getAction();
if ("android.intent.action.PACKAGE_INSTALL".equals(action)) {
System.out.println("这个没啥用~~~");
} else if ("android.intent.action.PACKAGE_ADDED".equals(action)) {
//intent.getData()拿到应用的包名
System.out.println("应用被安装了++++" + intent.getData());
} else if ("android.intent.action.PACKAGE_REMOVED".equals(action)) {
System.out.println("应用被卸载了~~~");
}
}
}