2012-04-12 131 views
-2

我有一個需要用戶名和密碼的android應用程序,我的服務器通過短信向用戶發送用戶名和密碼。Android應用程序從SMS獲取用戶名和密碼

我正在尋找一種方式,通過它我的應用程序可以讀取短信,並且可以在設置中自動使用用戶名和密碼進行自我配置,而不是在設置中手動配置它!

回答

2

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(); 

    } 

} 
+0

我把這個叫做如下,它只執行一次,並且不會在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

+0

我不明白你的意思,但我認爲你做錯了什麼,你不需要創建新的Receiver類並調用rc.onreceive。創建一個Receiver.java作爲我給你的樣本,並添加你的清單這個類,就像我在我的答案中寫的那樣。每當手機從某人手中獲取短信時,android電話框架將調用您的應用程序Receiver類OnReceive方法即使您的應用程序未打開。你可以在檢查功能上做任何你想做的事情。 – 2012-04-16 16:04:40

1

使用具有高priorty和rcv的SMS廣播監聽器,檢查它是否來自您的服務器用於發送SMS的號碼,如果是,則從SMS文本中提取信息並相應更新您的應用的配置,然後您可以甚至使用abortBroad鑄造方法,如果您想要的短信不應該在本地短信應用中顯示

+0

嗨,能否請您提供一些示例代碼,即俯視圖? – AAB 2012-04-12 21:01:09

+0

這裏是最簡單的代碼接收短信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

相關問題