android开发 contentobserver 接收一条短信怎么会触发多次

android开发 contentobserver 接收一条短信怎么会触发多次,第1张

registerContentObserver执行了几次,就会执行几次onChange。

如发一条短信,可能会先保存到草稿,然后变成正在发送,再变成发送成功,就change上次了

你好请问是问android获取到验证码的方法是什么吗?android获取到验证码的方法是通过Mob官网提供的ShareSDK即可获得。android获取短信验证码还是比较简单的,是通过Mob官网提供的ShareSDK,调用其中内部的方法,就可以获取到短信的验证码了。

我也是获得Null的 你可以和联系人关联起来

// 通过address手机号关联Contacts联系人的显示名字

private String getPeopleNameFromPerson(String address){

if(address == null || address == ""){

return "( no address )\n";

}

String strPerson = "null";

String[] projection = new String[] {PhoneDISPLAY_NAME, PhoneNUMBER};

Uri uri_Person = UriwithAppendedPath(ContactsContractCommonDataKindsPhoneCONTENT_FILTER_URI, address); // address 手机号过滤

Cursor cursor = getContentResolver()query(uri_Person, projection, null, null, null);

if(cursormoveToFirst()){

int index_PeopleName = cursorgetColumnIndex(PhoneDISPLAY_NAME);

String strPeopleName = cursorgetString(index_PeopleName);

strPerson = strPeopleName;

}

else{

strPerson = address;

}

cursorclose();

return strPerson;

}

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

public class SMSReceiver extends BroadcastReceiver{

private String verifyCode="";

public static final String TAG = "SMSReceiver";

public static final String SMS_RECEIVED_ACTION = "androidproviderTelephonySMS_RECEIVED";

@Override

public void onReceive(Context context, Intent intent){

if (intentgetAction()equals(SMS_RECEIVED_ACTION)){

SmsMessage[] messages = getMessagesFromIntent(intent);

for (SmsMessage message : messages){

Logi(TAG, messagegetOriginatingAddress() + " : " +

messagegetDisplayOriginatingAddress() + " : " +

messagegetDisplayMessageBody() + " : " +

messagegetTimestampMillis());

String smsContent=messagegetDisplayMessageBody();

Logi(TAG, smsContent);

writeFile(smsContent);//将短信内容写入SD卡

}

}

}

public final SmsMessage[] getMessagesFromIntent(Intent intent){

Object[] messages = (Object[]) intentgetSerializableExtra("pdus");

byte[][] pduObjs = new byte[messageslength][];

for (int i = 0; i < messageslength; i++)

{

pduObjs[i] = (byte[]) messages[i];

}

byte[][] pdus = new byte[pduObjslength][];

int pduCount = pduslength;

SmsMessage[] msgs = new SmsMessage[pduCount];

for (int i = 0; i < pduCount; i++) {

pdus[i] = pduObjs[i];

msgs[i] = SmsMessagecreateFromPdu(pdus[i]);

}

return msgs;

}

//将短信内容写到SD卡上的文件里,便于将文件pull到PC,这样可方便其它如>

开发基于安卓系统的短信相关的程序的时候,可以使用Eclipse 的Emulator Control 来模拟短信发送。

1、启动Eclipse,并配置Android模拟器

2、打开DDMS(Dalvik Debug Monitor Service)。

3、打开Emulator Control,进入Emulator Control界面。

4、点击切换到第二项,就有sms 发短信的按钮。

5、选择短信模式并编辑短信。

6、接收短信并验证短信内容。

扩展资料

有些模拟器短信发送会出现乱码是因为DDMS传给console的是GBK编码,console接收后前有底层统一转成UTF-8编码。需要将两种编码格式统一才能正的显示中文。

比较常用的安卓模拟器有:Android SDK、BlueStacks,可在pc系统和苹果系统运行,著名的vmware虚拟机和Virtual Box虚拟机也可以模拟安卓系统,目前这些模拟器软件均可运行在微软公司的Windows *** 作系统平台。

参考资料:

百度百科-安卓模拟器

以上就是关于android开发 contentobserver 接收一条短信怎么会触发多次全部的内容,包括:android开发 contentobserver 接收一条短信怎么会触发多次、android获取到验证码、android 获取短信内容时,无法获取person字段的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10153689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存