6

我正在尝试在 Android 中创建一个仅由 1 个广播接收器(仅此而已)组成的应用程序。

广播接收者应该简单地捕获广播(例如收到短信,记录信息并完成)。但是,我注意到广播没有被接收者捕获,除非我指出我有主 Activity,因为以下 AndroidManifest.xml 将显示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

<uses-permission android:name="android.permission.RECEIVE_SMS" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <receiver android:name="com.myapp.MyBroadcastReceiver" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

    <activity
        android:name="com.myapp.MainActivity"
        android:label="@string/activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

我什至不必在应用程序中有一个 Activity 类。此外,如果我在意图过滤器中删除android.intent.category.LAUNCHERandroid.intent.action.MAIN,它也不起作用。我的手机和模拟器上的行为都是一样的,它们都运行 android 4.2

我的 Broadcastreceiver 类如下所示:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,intent.getAction(),Toast.LENGTH_SHORT).show();
    }
}

难道不能有一个只有广播接收器的应用程序吗?

4

2 回答 2

6

从 Android 3.1 (API 12) 开始,在用户手动打开应用程序的 UI 组件(活动)至少一次之前,应用程序无法接收广播。即使用户强制停止应用程序,也同样适用。

参考:http: //developer.android.com/about/versions/android-3.1.html#launchcontrols

于 2013-03-27T10:51:41.520 回答
0

你不应该做一个服务而不是一个应用程序吗?(我从未创建过服务,但我认为它应该更适合您的情况)

于 2013-03-27T10:15:49.883 回答