版权声明:本文为博主原创文章,未经博主允许不得转载。
https://blog.csdn.net/weixin_40790006/article/details/79915466
帮助类:
通知:
package com.example.f405.broadcasttest.utils; import android.app.Notification; import android.app.NotificationManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.graphics.BitmapFactory; import android.provider.Settings; import android.support.v4.app.NotificationCompat; import com.example.f405.broadcasttest.R; /** * Created by F405 on 2018/4/12. */ public class BootBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 通知栏,系统服务 NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); // 通知栏配置 Notification notification = new NotificationCompat.Builder(context) .setContentTitle("title") .setContentText("content") .setWhen(System.currentTimeMillis()) .setSmallIcon(R.mipmap.ic_launcher_round) .setLargeIcon(BitmapFactory.decodeResource(context.getResources(),R.mipmap.ic_launcher)) .build(); // 显示通知栏 manager.notify(1,notification); } }
网络状态:
package com.example.f405.broadcasttest.utils; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkInfo; import android.widget.Toast; /** * Created by F405 on 2018/4/12. */ public class NetworkBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo(); if (activeNetworkInfo != null && activeNetworkInfo.isAvailable()){ Toast.makeText(context, "网络已连接", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(context, "网络未连接", Toast.LENGTH_SHORT).show(); } } }
实现:
package com.example.f405.broadcasttest; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.example.f405.broadcasttest.utils.MyLocalBroadcastReceiver; import com.example.f405.broadcasttest.utils.MyselfBroadcaseReceiver; import com.example.f405.broadcasttest.utils.NetworkBroadcastReceiver; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btn_receiver; private Button btn_register; private Button btn_local; private NetworkBroadcastReceiver receiver; private Button btn_mySelf; private MyselfBroadcaseReceiver receiver_myself; private LocalBroadcastManager manager1; private MyLocalBroadcastReceiver receiver_local; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { btn_receiver = (Button) findViewById(R.id.btn_receiver); btn_register = (Button) findViewById(R.id.btn_register); btn_local = (Button) findViewById(R.id.btn_local); btn_mySelf = (Button) findViewById(R.id.btn_mySelf); btn_receiver.setOnClickListener(this); btn_register.setOnClickListener(this); btn_mySelf.setOnClickListener(this); btn_local.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_receiver: // 静态,开机自启,发送通知 // 清单文件配置 break; // 动态注册,不需要在清单文件注册 case R.id.btn_register: receiver = new NetworkBroadcastReceiver(); registerReceiver(receiver,new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); break; case R.id.btn_mySelf: // 动态/静态自定义广播注册 // 发送广播 Intent intent = new Intent("myself"); sendBroadcast(intent); // // 接收广播 // receiver_myself = new MyselfBroadcaseReceiver(); // registerReceiver(receiver_myself,new IntentFilter("myself")); break; case R.id.btn_local: // 本地广播,有问题?? // 发送本地广播 manager1 = LocalBroadcastManager.getInstance(this); Intent intent_local = new Intent("local"); manager1.sendBroadcast(intent_local); // 注册本地广播 receiver_local = new MyLocalBroadcastReceiver(); manager1.registerReceiver(receiver,new IntentFilter("local")); break; } } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); // unregisterReceiver(receiver_myself); manager1.unregisterReceiver(receiver_local); } }
清单文件:
<receiver android:name=".utils.BootBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> <receiver android:name=".utils.MyselfBroadcaseReceiver" android:enabled="true" android:exported="true"> <intent-filter > <action android:name="myself"/> </intent-filter> </receiver>