我想實現一旦安裝它就永遠不會被終止的應用程序,並監視收到的每個收到的SMS。實現BroadcastReceiver即服務 - Android
我想在我的應用程序中實施服務,它擁有BroadcastReciever的實例。
你能幫我通過一個例子來實現嗎?爲了達到這個目的,這是否是正確的OOD?
Thx !!
我想實現一旦安裝它就永遠不會被終止的應用程序,並監視收到的每個收到的SMS。實現BroadcastReceiver即服務 - Android
我想在我的應用程序中實施服務,它擁有BroadcastReciever的實例。
你能幫我通過一個例子來實現嗎?爲了達到這個目的,這是否是正確的OOD?
Thx !!
1.您的解決方案僅適用於您。沒有服務是沒有被系統殺死的。
2.You需要一個箱子到BroadCastReciver
讀取每個傳入消息。請看看下面的代碼註冊傳入SMS
讀取器類,清單
3.當您收到的BroadCastReciver
觸發您需要從BroadCastReciver
和通呼叫服務SMS
要進一步處理的服務數據。
4.這樣你就不用擔心服務被System殺死了。
AndroidManifest.xml
文件細節:在AndroidManifest
申報接收機
爲AndroidManifest.xml文件完整代碼:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidexample.broadcastreceiver"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.androidexample.broadcastreceiver.BroadcastNewSms"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.androidexample.broadcastreceiver.IncomingSms">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<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>
</manifest>
IncomingSms.java文件的詳細信息:
I have made broadcast event reciever in this file
1. Created class IncomingSms with extends BroadcastReceiver class
public class IncomingSms extends BroadcastReceiver
2. Get the object of SmsManager to find out received sms details
// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();
3. Create method receiver()
public void onReceive(Context context, Intent intent)
4. Get/Read current Incomming SMS data
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();
Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);
// Show alert
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
toast.show();
} // end for loop
} // bundle is null
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);
}
======= ======================================= ================================================== =
沒有什麼,不能由OS – tyczj