导航:首页 > 操作系统 > 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写入短信相关的资料

热点内容
企业服务器为什么不能被拷贝 浏览:119
用c编程实现txt搜索 浏览:854
JAVA小数随机数 浏览:336
app加拿大pc怎么操控的 浏览:698
光影app苹果怎么下载不了 浏览:971
php会员注册代码 浏览:511
csgo如何用128tick服务器 浏览:571
百度网度怎么解压 浏览:946
windowsopencv源码 浏览:945
origin平滑算法 浏览:875
unity程序员简历 浏览:63
单片机ifelse 浏览:695
如何理解php面向对象 浏览:96
macword转pdf 浏览:848
python列表求交集 浏览:874
解压包如何转音频 浏览:447
机明自动编程软件源码 浏览:326
php端口号设置 浏览:541
phperegreplace 浏览:320
androidgridview翻页 浏览:537