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字段的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)