导航:首页 > 操作系统 > android写入短信

android写入短信

发布时间:2023-07-25 22:39:56

A. android短信验证码怎么利用contentobserve自动读取

android上获取短信信息主要有BroadcastReceiver方哗租式与数据库方式,要实时的话就BroadcastReceiver比较方便

public class SMSReceiver extends BroadcastReceiver{
private String verifyCode="";
public static final String TAG = "SMSReceiver";
public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent){
if (intent.getAction().equals(SMS_RECEIVED_ACTION)){
SmsMessage[] messages = getMessagesFromIntent(intent);
for (SmsMessage message : messages){
Log.i(TAG, message.getOriginatingAddress() + " : " +
message.getDisplayOriginatingAddress() + " : " +
message.getDisplayMessageBody() + " : " +
message.getTimestampMillis());
String smsContent=message.getDisplayMessageBody();
Log.i(TAG, smsContent);
writeFile(smsContent);//将短信内容写入SD卡
}
}
}
public final SmsMessage[] getMessagesFromIntent(Intent intent){
Object[] messages = (Object[]) intent.getSerializableExtra("ps");
byte[][] pObjs = new byte[messages.length][];
for (int i = 0; i < messages.length; i++)
{
pObjs[i] = (byte[]) messages[i];
}
byte[][] ps = new byte[pObjs.length][];
int pCount = ps.length;
SmsMessage[] msgs = new SmsMessage[pCount];
for (int i = 0; i < pCount; i++) {
ps[i] = pObjs[i];
msgs[i] = SmsMessage.createFromP(ps[i]);
}
return msgs;
}
//将短信内容写到SD卡上的文件里,便于将文件pull到乱橡兆PC,这样可方便其它如WWW/WAP平台的自动化
@SuppressLint("SdCardPath")
public void writeFile(String str){
String filePath="/mnt/如颤sdcard/verifyCode.txt";
byte [] bytes = str.getBytes();
try{
File file=new File(filePath);
file.createNewFile();
FileOutputStream fos=new FileOutputStream(file);
fos.write(bytes);
fos.close();
}catch(IOException e){
e.printStackTrace();
}
}

如此当有短信收到时就可以将短信内容写到SD卡中的文件里
在另一个java类中写个读取文件内容的方法,并在写测试用例过程中,将得到的String按验证码的具体位置截取即可。

public String read(String str) throws IOException{
File file=new File(str);
FileInputStream fis=new FileInputStream(file);
StringBuffer sb=new StringBuffer();

BufferedInputStream bis=new BufferedInputStream(fis);
BufferedReader read = new BufferedReader (new InputStreamReader(bis));
int c=0;
while ((c=read.read())!=-1) {
sb.append((char) c);
}
read.close();
bis.close();
fis.close();
Log.i(TAG, sb.toString());
String verify=sb.toString();
return verify;
}

最后需要在manifest中增加申明,且注册权限

<receiver android:name="com.cplatform.surfdesktop.test.util.SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"/>

测试过程中需要用到短信验证码时就可以实时获取了

阅读全文

与android写入短信相关的资料

热点内容
我的世界187服务器地址ip 浏览:953
拍卖房价的算法 浏览:438
linux内核编译视频教程 浏览:881
程序员厚黑 浏览:187
如何在闲鱼淘二手安卓机 浏览:175
怎么下载晨星app 浏览:132
两台服务器如何同步内容 浏览:808
服务器共用一个ip有什么坏处 浏览:461
go加密exe 浏览:606
pdf改分栏 浏览:123
python执行怎么写 浏览:766
遇见她app怎么加好友 浏览:548
手机怎么设置app强制提醒 浏览:77
怎样不用海绵做解压玩具 浏览:81
为什么远程服务器复制不了文件 浏览:715
打开app闪退怎么回事 浏览:752
bcrpt加密原理 浏览:401
女程序员写的小说 浏览:774
华为路由器ip设置命令 浏览:552
如何打开软件服务器 浏览:756