我是Android开发的新手。我试图从我的活动中发明一个广播接收器。
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"ABC", Toast.LENGTH_LONG).show();
Bundle extras = intent.getExtras();
String[] parameters= (String[])intent.getSerializableExtra("parameters");
}
}
我的活动是
public class MyActivity extends Activity {
public static String BROADCAST_ACTION="com.kiosk.cbal.CALL_RECEIVER";
/**
* @see android.app.Activity#onCreate(Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String parameters = "safdsam,fdsa,fdsa,fdsa,fdsa";
String[] parameters =abc.split(",");
Intent i = new Intent("com.package.MyReceiver");
i.putExtra("parameters", parameters);
sendBroadcast(i);
}
}
我的清单文件是
<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="1" android:versionName="1.0"
package="com.package" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="7"/>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name="MyActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="com.kiosk.cbal.CALL_RECEIVER"/>
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.BATTERY_STATS"/>
</manifest>
现在我将如何通过活动给广播接收者打电话?
答案 0 :(得分:0)
从操作名称中删除空格。在创建意图时使用该名称。
答案 1 :(得分:0)
更新:上面的代码仍有Intent i = new Intent("com.package.MyReceiver");
。它应该是Intent i = new Intent("com.kiosk.cbal.CALL_RECEIVER");
同时,在您的清单中,接收者名称被指定为<receiver android:name="MyReceiver">
。请注意android:name
必须是完全限定的类名或相对于包名的名称。 PackageManager
区分两者的方式是在名称的开头存在.
。因此,在您的声明中,PackageManager
很可能尝试实例化MyReceiver' instead of
com.package.MyReceiver`。
在任何情况下,您都应该查看Android日志文件,详细了解您正在播放的意图出了什么问题。
传递给Intent
构造函数的字符串必须与清单中接收者的action元素指定的字符串相同。您正在使用您的接收者类名构建Intent
,但声明您的接收者正在听取VIEW
意图。