发送自定义广播
时间: 2023-09-01 09:08:28 浏览: 42
要发送自定义广播,可以按照以下步骤进行操作:
1. 创建一个 Intent 对象,并设置 action、category 和 extra 数据(可选)。
2. 调用 sendBroadcast() 方法发送广播。
下面是一个示例代码:
```
Intent intent = new Intent("com.example.MY_CUSTOM_ACTION");
intent.addCategory("com.example.MY_CUSTOM_CATEGORY");
intent.putExtra("data", "Hello, World!");
sendBroadcast(intent);
```
这里创建了一个名为 "com.example.MY_CUSTOM_ACTION",类别为 "com.example.MY_CUSTOM_CATEGORY" 的自定义广播,并附带了一个名为 "data",值为 "Hello, World!" 的额外数据。然后调用 sendBroadcast() 方法发送广播。
注意:如果你的应用程序想要接收这个广播,需要在 Manifest 文件中注册一个 BroadcastReceiver,并添加相应的 intent-filter。
相关问题
Android 发送自定义广播的例子
当然可以啊,以下是一个简单的Android发送自定义广播的例子:
```
//发送自定义广播
Intent intent = new Intent("com.example.broadcast.MY_BROADCAST");
intent.putExtra("msg", "Hello, 这是一个自定义广播!");
sendBroadcast(intent);
//接收自定义广播
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.example.broadcast.MY_BROADCAST")) {
String msg = intent.getStringExtra("msg");
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}
}
```
希望能对你有所帮助!
使用具体的代码实现实现通过ContentProvider,实现对另一个App的SqlList数据库中的数据表中的数据进行增删改查。 对数据进行增、删、改操作后,发出自定义广播,携带字符串(内容自定义),另一个App接收发出的自定义广播,获取广播中携带的字符串,存入数据表中,同时存入表中的字段还包括接收到广播的时间。(自己的APP既能发送自定义广播,也能接收另一个App的自定义广播)
首先,在提供数据的应用中,需要创建一个 ContentProvider 类,用于提供对数据库的访问接口。在 ContentProvider 类中需要实现如下几个方法:
1. onCreate() 方法:在此方法中初始化数据库。
2. query() 方法:用于查询数据。
3. insert() 方法:用于插入数据。
4. update() 方法:用于更新数据。
5. delete() 方法:用于删除数据。
在另一个应用中,需要注册一个 BroadcastReceiver 类,用于接收来自第一个应用发送的广播,并将广播中携带的数据存入数据库中。
下面是示例代码:
在提供数据的应用中:
```
public class MyContentProvider extends ContentProvider {
private DBHelper dbHelper;
private SQLiteDatabase db;
@Override
public boolean onCreate() {
dbHelper = new DBHelper(getContext());
db = dbHelper.getWritableDatabase();
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
Cursor cursor = db.query("table_name", projection, selection, selectionArgs, null, null, sortOrder);
return cursor;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
db.insert("table_name", null, values);
// 发送自定义广播
Intent intent = new Intent("com.example.myapp.MY_ACTION");
intent.putExtra("data", "insert data");
getContext().sendBroadcast(intent);
return uri;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count = db.update("table_name", values, selection, selectionArgs);
// 发送自定义广播
Intent intent = new Intent("com.example.myapp.MY_ACTION");
intent.putExtra("data", "update data");
getContext().sendBroadcast(intent);
return count;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = db.delete("table_name", selection, selectionArgs);
// 发送自定义广播
Intent intent = new Intent("com.example.myapp.MY_ACTION");
intent.putExtra("data", "delete data");
getContext().sendBroadcast(intent);
return count;
}
@Override
public String getType(Uri uri) {
return null;
}
private class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "my_db";
private static final int DB_VERSION = 1;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table_name (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
```
在另一个应用中:
```
public class MyBroadcastReceiver extends BroadcastReceiver {
private DBHelper dbHelper;
private SQLiteDatabase db;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if ("com.example.myapp.MY_ACTION".equals(action)) {
String data = intent.getStringExtra("data");
long time = System.currentTimeMillis();
dbHelper = new DBHelper(context);
db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("data", data);
values.put("time", time);
db.insert("table_name", null, values);
}
}
private class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "my_db";
private static final int DB_VERSION = 1;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table_name (_id INTEGER PRIMARY KEY AUTOINCREMENT, data TEXT, time INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
```
需要在 AndroidManifest.xml 文件中分别添加如下代码:
提供数据的应用:
```
<provider
android:name=".MyContentProvider"
android:authorities="com.example.myapp.provider"
android:exported="true" />
```
另一个应用:
```
<receiver
android:name=".MyBroadcastReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.example.myapp.MY_ACTION" />
</intent-filter>
</receiver>
```
需要注意的是,两个应用中的数据库表结构需要一致。