实现BroadcastReceiver即服务 - Android
问题描述:
我想实现一旦安装它就永远不会被终止的应用程序,并监视收到的每个收到的SMS。实现BroadcastReceiver即服务 - Android
我想在我的应用程序中实施服务,它拥有BroadcastReciever的实例。
你能帮我通过一个例子来实现吗?为了达到这个目的,这是否是正确的OOD?
Thx !!
答
1.您的解决方案仅适用于您。没有服务是没有被系统杀死的。
2.You需要一个箱子到BroadCastReciver
读取每个传入消息。请看看下面的代码注册传入SMS
读取器类,清单
3.当您收到的BroadCastReciver
触发您需要从BroadCastReciver
和通呼叫服务SMS
要进一步处理的服务数据。
4.这样你就不用担心服务被System杀死了。
AndroidManifest.xml
文件细节:在AndroidManifest
-
申报接收机
在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