BroadCast接收器在启动时

时间:2013-12-20 11:51:57

标签: android broadcastreceiver

我从android开始,我正在学习一些Android概念。在这种情况下,我正在使用BroadCast接收器练习。

我必须创建一个BroadCast接收器,当我启动手机/模拟器时,启动一个显示纯文本的活动。

我有这堂课:

public class MainActivity extends Activity {

private final BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        IntentFilter mfilter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
        registerReceiver(receiver, mfilter);
    }
};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
}

但我没有做我需要做的事情,它什么都不做,所以......我在这里做错了什么?

在清单中我只是声明了活动。

4 个答案:

答案 0 :(得分:2)

试试这个......

步骤1: 在AndroidManifest.xml中设置权限

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

步骤2: 在接收器中添加这是intent过滤器,

<receiver android:name=".BootReciever">
    <intent-filter >
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.QUICKBOOT_POWERON" />

    </intent-filter>
</receiver>

第三步: 现在,您可以从Receiver类的onReceive方法启动应用程序的第一个活动。

public class BootReciever extends BroadcastReceiver
{

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Intent myIntent = new Intent(context, MainActivity.class);
    myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    context.startActivity(myIntent);
}

}

答案 1 :(得分:1)

您无法动态注册ACTION_BOOT_COMPLETED接收器(这不是一种方式)。 ACTION_BOOT_COMPLETED接收器必须在清单文件中静态注册

   <receiver android:name="com.myapp.receiver.BootReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

答案 2 :(得分:0)

当您在“活动”或“服务”中注册接收器时,它的生命周期将与它们绑定 您需要在应用清单中定义接收器。

例如:

class MyClass extends BroadCastReceiver{
 @Override
    public void onReceive(Context context, Intent intent) {
        IntentFilter mfilter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
        registerReceiver(receiver, mfilter);
    }
}

答案 3 :(得分:0)

通过扩展BroadcastReceiver类创建自己的MyReceiver类,并使用过滤器ACTION_BOOT_COMPLETED在清单中注册MyReceiver。

 <receiver android:name="com.test.MyReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>