我有一個需要用戶名和密碼的android應用程序,我的服務器通過短信向用戶發送用戶名和密碼。Android應用程序從SMS獲取用戶名和密碼
我正在尋找一種方式,通過它我的應用程序可以讀取短信,並且可以在設置中自動使用用戶名和密碼進行自我配置,而不是在設置中手動配置它!
我有一個需要用戶名和密碼的android應用程序,我的服務器通過短信向用戶發送用戶名和密碼。Android應用程序從SMS獲取用戶名和密碼
我正在尋找一種方式,通過它我的應用程序可以讀取短信,並且可以在設置中自動使用用戶名和密碼進行自我配置,而不是在設置中手動配置它!
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();
}
}
使用具有高priorty和rcv的SMS廣播監聽器,檢查它是否來自您的服務器用於發送SMS的號碼,如果是,則從SMS文本中提取信息並相應更新您的應用的配置,然後您可以甚至使用abortBroad鑄造方法,如果您想要的短信不應該在本地短信應用中顯示
嗨,能否請您提供一些示例代碼,即俯視圖? – AAB 2012-04-12 21:01:09
這裏是最簡單的代碼接收短信http://androidsourcecode.blogspot.com/2010/10/receiving-sms-using-broadcastreceiver.html和這個鏈接也有很好的細節http://boomtech.in/entries/general/ sms-toast - using-broadcast-receiver --- retrive-contact-information – 2012-04-12 21:08:27
我把這個叫做如下,它只執行一次,並且不會在20秒或更長時間內保持活動。消息將在20秒內發送我希望它應該持續聽至少20秒。 \t'sms.sendTextMessage(「XXXXXX」,null,「MSG」,null,null); Receiver rc = new Receiver(); rc.onReceive(getContext(),new Intent(「android.provider.Telephony.SMS_RECEIVED」));' – AAB 2012-04-16 09:26:28
我不明白你的意思,但我認爲你做錯了什麼,你不需要創建新的Receiver類並調用rc.onreceive。創建一個Receiver.java作爲我給你的樣本,並添加你的清單這個類,就像我在我的答案中寫的那樣。每當手機從某人手中獲取短信時,android電話框架將調用您的應用程序Receiver類OnReceive方法即使您的應用程序未打開。你可以在檢查功能上做任何你想做的事情。 – 2012-04-16 16:04:40