如何创建一个只有1个广播接收器的Android应用程序?

Ido*_*Ido 5 android broadcastreceiver android-manifest

我正在尝试在Android中创建一个仅由1个broadcastreceiver组成的应用程序(没有别的).

广播接收者应该只是捕捉广播(例如收到的短信息,记录信息并完成).但是,我注意到接收器没有捕获广播,除非我指示我有主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>
Run Code Online (Sandbox Code Playgroud)

我甚至不需要在应用程序中有一个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();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能只有广播接收器的应用程序?

and*_*ryo 6

从Android 3.1(API 12)开始,应用程序无法接收广播,直到用户手动打开应用程序的UI组件(活动)一次.即使用户强制停止应用程序,也会应用相同的操作.

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