我需要開發一個應用程序,該應用程序在用戶設備到達時立即讀取用戶SMS消息,然後以JSON數據的形式提取併發送到Web服務器。 我是新來的android開發。 我們將跟蹤的消息將來自+252898,除了一些額外的信息外,這些消息在內容中很常見,所以我們需要的是使用JSON數據將附加內容發送到我們的Web應用程序。 樣本消息來自+252898。Android如何開發短信應用程序,它將接收用戶消息並以JSON格式發送
-1
A
回答
3
有涉及2個組件,收到短信時的邏輯和分析數據,並把數據發送到你的Web應用程序的邏輯。
爲了在收到短信時獲得工作的「掛鉤」,您需要使用SMS_RECEIVED意圖構建廣播接收器。
在您的應用程序,創建一個新的BroadcastReceiver
叫MySMSReceiver和接收器添加到清單:
<receiver android:name=".MySMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
此外,添加的權限清單,以便能夠接收和閱讀短信:
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
現在這裏是部分代碼,你將有接收器:
public class MySMSReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
}
}
現在,當您在手機上收到短信時,您的廣播接收機將運行其onReceive方法,因爲您的意圖過濾器明確指定了SMS_RECIVED意圖。
使用SMS_RECEIVED意圖(在onReceive方法中接收到的參數),您可以讀取的意圖內會有幾個附加項。內的onReceive,您可以添加類似的邏輯以下內容:
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdus.length; i++) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
String senderNumber = message.getDisplayOriginatingAddress();
String messageContent = message.getDisplayMessageBody();
}
}
如上,你便要確保該消息是通過檢查senderNumber或在messageContent您感興趣的。許多應用程序嘗試使用正則表達式模式匹配來確保當前收到的消息符合應用程序的興趣。
現在您需要構建您的JSON對象並將其發佈到您的服務器。
導入幾個班,以您的接收器,並創建一個郵政法後的邏輯來構造一個JSON對象發送到你的Web應用程序:現在
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONObject;
public void Post(string number, string message){
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("your web api url here");
JSONObject jsonObject = new JSONObject();
jsonObject.accumulate("number", number);
jsonObject.accumulate("message", message);
StringEntity se = new StringEntity(jsonObject.ToString());
httpPost.setEntity(se);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
httpclient.execute(httpPost);
} catch (Exception e) {
}
}
當然,如果你想讀的響應POST,您可以閱讀httpclient.execute(httpPost)
的返回值。
現在邏輯完成了,你只需要把這些部分放在一起就可以滿足你的需要。
相關問題
- 1. 應用程序發送多個短信接收電話/短信
- 2. 短信發送/發送狀態從默認消息應用程序 - Android
- 3. 使用Socket發送和接收消息的Android應用程序:
- 4. xmpp在Android應用程序中發送和接收消息
- 5. 如何將應用程序發送至應用程序消息
- 6. 如何發送短信並在iPhone sdk中接收短信?
- 7. 發送和接收短信therough Web應用程序
- 8. 發送和接收短信和開發短信面板
- 9. 發送定期的信息/消息到Android應用程序
- 10. 發送短信並將它們複製到「已發送消息」文件夾
- 11. 如何將信息從android應用程序發送到SOTI MobiControl?
- 12. 如何從cakephp應用程序發送短信,如果成功顯示消息?
- 13. 從Windows應用程序發送短信
- 14. Android 4.4+ MightyText和AirDroid等應用程序如何發送短信?
- 15. 發送短信,但不顯示它在發送的消息
- 16. 如何在不打開短信應用程序的情況下發送短信
- 17. 暫停從java web應用程序發送和接收消息
- 18. JAVA通過json發送/接收信息
- 19. 以編程方式發送/接收數據短信iOS
- 20. 發送消息給android設備,它將消息發送回Android Wear,但收到消息時從不會觸發
- 21. 應用程序可以向其用戶發送收件箱消息嗎?
- 22. Android程序發送消息
- 23. 如何使用短信管理器將短信發送到android
- 24. 通過React本機應用程序打開併發送消息
- 25. 如何使用Intent將鏈接發送到默認的短信應用程序?
- 26. 在android中發送獨特的短信和接收looong短信
- 27. 發送和接收信息
- 28. iOS 7/8 - 檢測iOS消息應用程序打開,如果它已發送短消息
- 29. 發送消息從Android應用程序直接向PHONENUMBER Viber的
- 30. 從iphone應用程序發送短信到用戶