Android应用程序从SMS获取用户名和密码
我有一个android的应用程序,需要用户名和密码,我的服务器通过短信将用户名和密码发送到手机Android应用程序从SMS获取用户名和密码,android,sms,Android,Sms,我有一个android的应用程序,需要用户名和密码,我的服务器通过短信将用户名和密码发送到手机 我一直在寻找一种方法,通过这种方法,我的应用程序可以读取短信,并可以自动配置自己的用户名和密码的设置,而不是手动配置它的设置 优先使用SMS广播侦听器,并在rcv上检查它是否来自您的服务器用于发送SMS的号码。如果是,则从SMS文本中提取信息,并相应地更新应用程序的配置。如果您希望SMS不在本机SMS应用程序中显示,您甚至可以使用abortBroad cast方法AndroidManifest.xml
我一直在寻找一种方法,通过这种方法,我的应用程序可以读取短信,并可以自动配置自己的用户名和密码的设置,而不是手动配置它的设置 优先使用SMS广播侦听器,并在rcv上检查它是否来自您的服务器用于发送SMS的号码。如果是,则从SMS文本中提取信息,并相应地更新应用程序的配置。如果您希望SMS不在本机SMS应用程序中显示,您甚至可以使用abortBroad cast方法AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
<receiver android:name=".Receiver" >
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
Receiver.java
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.content.BroadcastReceiver;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
public class Receiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++)
{
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
checkSMS(context, msgs[i]);
}
}
}
void checkSMS(Context context, SmsMessage sms)
{
String msg = sms.getMessageBody().toString();
}
}
import java.util.ArrayList;
导入android.content.Context;
导入android.content.Intent;
导入android.content.BroadcastReceiver;
导入android.os.Bundle;
导入android.telephony.smsmsmanager;
导入android.telephony.sms消息;
公共类接收器扩展了广播接收器
{
@凌驾
公共void onReceive(上下文、意图){
//---获取传入的SMS消息---
Bundle=intent.getExtras();
SmsMessage[]msgs=null;
if(bundle!=null)
{
//---检索收到的SMS消息---
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;iHi,你能给我提供一些示例代码,比如一个概览吗?这里是接收短信最简单的代码,这个链接也有很好的细节,我按如下方式调用它,它只执行一次,在20秒甚至更长时间内不会保持活动状态。消息将在20秒内发送,我希望它能继续收听至少20秒。sms.sendTextMessage(“XXXXXX”,null,“MSG”,null,null);Receiver rc=new Receiver();rc.onReceive(getContext(),new Intent(“android.provider.Telephony.sms_RECEIVED”));
我不明白你的意思,但我认为你做错了什么,你不需要创建新的Receiver类并调用rc.onreceive。创建一个Receiver.java作为我给你的示例,并将你的清单添加到这个类中,就像我在回答中所写的那样。无论何时手机收到某人的短信,android telephony framework都会调用你的ap应用程序接收器类OnReceive方法,即使您的应用程序未打开。并且您可以在checksms函数上执行任何您想要的操作。