我从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);
}
}
但我没有做我需要做的事情,它什么都不做,所以......我在这里做错了什么?
在清单中我只是声明了活动。
答案 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>