Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序从SMS获取用户名和密码_Android_Sms - Fatal编程技术网

Android应用程序从SMS获取用户名和密码

Android应用程序从SMS获取用户名和密码,android,sms,Android,Sms,我有一个android的应用程序,需要用户名和密码,我的服务器通过短信将用户名和密码发送到手机 我一直在寻找一种方法,通过这种方法,我的应用程序可以读取短信,并可以自动配置自己的用户名和密码的设置,而不是手动配置它的设置 优先使用SMS广播侦听器,并在rcv上检查它是否来自您的服务器用于发送SMS的号码。如果是,则从SMS文本中提取信息,并相应地更新应用程序的配置。如果您希望SMS不在本机SMS应用程序中显示,您甚至可以使用abortBroad cast方法AndroidManifest.xml

我有一个android的应用程序,需要用户名和密码,我的服务器通过短信将用户名和密码发送到手机


我一直在寻找一种方法,通过这种方法,我的应用程序可以读取短信,并可以自动配置自己的用户名和密码的设置,而不是手动配置它的设置

优先使用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函数上执行任何您想要的操作。