如果您正在测试没有活动的广播接收器,则应编辑运行配置。在编辑配置对话框中,选择“不启动活动”选项,以便安装但不启动活动,并单击“运行”按钮。这将启动不带活动的应用程序。
以下内容可能会对您有所帮助:
创建和发送广播意图
已经为SendBroadcast应用程序创建了框架,现在是实现代码以发送广播意图的时候了。这涉及到实现之前指定为Button视图中onClick目标的broadcastIntent()方法。找到并双击SendBroadcastActivity.java文件,并修改它以添加创建和发送广播意图的代码。一旦修改完成,此类的源代码应如下所示:
package com.ebookfrenzy.sendbroadcast;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Intent;
import android.view.View;
public class SendBroadcastActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send_broadcast);
}
public void broadcastIntent(View view)
{
Intent intent = new Intent();
intent.setAction("com.ebookfrenzy.sendbroadcast");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(intent);
}
.
.
.
}
创建广播接收器
要创建广播接收器,需要创建一个新类,该类是BroadcastReceiver超类的子类。创建一个名为BroadcastReceiver的新项目,将应用程序名称设置为com.ebookfrenzy,然后在单击完成之前选择添加无活动选项。
在Project工具窗口中,导航到app->java,右键单击包名称。从结果菜单中,选择New->Other->Broadcast Receiver菜单选项,将类命名为MyReceiver,并确保选择了导出和启用选项。
创建后,Android Studio会自动将新的MyReceiver.java类文件加载到编辑器中,其应如下所示:
package com.ebookfrenzy.broadcastreceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyReceiver extends BroadcastReceiver {
public MyReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
}
从代码中可以看出,Android Studio为新类生成了一个模板,并为onReceive()方法生成了一个存根。现在需要对该类进行一些更改以实现所需的行为。因此,在MyReceiver.java文件中保持不变,修改代码如下:
package com.ebookfrenzy.broadcastreceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MyReceiver extends BroadcastReceiver {
public MyReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Broadcast Intent Detected.",
Toast.LENGTH_LONG).show();
}
}
广播接收器代码现在已经完成。
在清单文件中配置广播接收器
与其他Android项目一样,BroadcastReceiver也有一个名为AndroidManifest.xml的清单文件。
该文件需要宣传广播接收器的存在,并包含一个意图过滤器来指定接收器感兴趣的广播意图。在上一节创建BroadcastReceiver类时,Android Studio会自动向清单文件添加一个<receiver>
元素。因此,唯一剩下的任务是在适当配置自定义操作字符串的<receiver>
声明内部添加一个<intent-filter>
元素:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ebookfrenzy.broadcastreceiver.broadcastreceiver" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action
android:name="com.ebookfrenzy.sendbroadcast" >
</action>
</intent-filter>
</receiver>
</application>
</manifest>
完成清单文件后,广播示例已准备好进行测试。