Android(安卓)电话 短信
Android打电话也是两行代码:
Intent intent = new Intent("android.intent.action.DIAL", Uri.parse("tel:10086") );
startActivity(intent);
这样便进进入呼叫界面了。
接下来我们再看一下监听电话状态的功能。
监听电话状态首先建立一个继承于PhoneStateListener电话监听类(如:TeleListener),并让TelephonyManager监听它。
TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyMgr.listen(new TeleListener(), PhoneStateListener.LISTEN_CALL_STATE | PhoneStateListener.LISTEN_SERVICE_STATE | PhoneStateListener.LISTEN_SIGNAL_STRENGTH);
TeleListener需要实现父类的几个方法,onCallStateChanged、onServiceStateChanged、onSignalStrengthChanged,根据方法名我们便可知其功能,这里就不再详述。
Android中发短信非常方便,两行代码:
SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage("10086", null, "hello", null, null);
由于现在我还没有Android手机,也不知道这样能否成功。
收短信稍稍复杂一点,需要建立一个BroadcastReceiver,来监听android.provider.Telephony.SMS_RECEIVED事件,我不太详述,完整代码如下:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdusObj = (Object[]) bundle.get("pdus");
if (pdusObj != null) {
SmsMessage[] messages = new SmsMessage[pdusObj.length];
for (int n = 0; n < pdusObj.length; n++) {
messages[n] = SmsMessage.createFromPdu((byte[]) pdusObj[n]);
Log.d("MsgTest", "Message: " + n + " " + messages[n].getMessageBody());
Log.d("MsgTest", "Message from: " + messages[n].getOriginatingAddress());
}
}
}
}
}
注意:
1、不要忘记添加短信收发相关的权限;
2、不要忘记配置SMSReceiver。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- android 4.3以上修改DNS 及 流程(netd)
- 利用签名机制进行程序自检——Android防破解
- Android动画Animation之Tween用代码实现动画效果
- Android(安卓)Studio 统计代码行数插件 — Statistic
- 修改android4.4图库系列二——自定义菜单
- Android(安卓)JNI(实现自己的JNI_OnLoad函数)
- Android(安卓)代码中对不同国家支持的信道的设置
- Android系统横竖屏切换时候Activity的生命周期