BroadcastReceiver之(手動代碼注冊廣播)屏幕鎖屏、解鎖監聽、開機自啟


對於解鎖和鎖屏這種用的比較頻繁action,谷歌做了限制,必須手動用代碼注冊

直接上代碼:這是注冊廣播(手動代碼注冊廣播接收者

 1 public class MainActivity extends AppCompatActivity {
 2     Screen screen;
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7      
 8         screen = new Screen();
 9         IntentFilter filter = new IntentFilter();
10         //添加action
11         filter.addAction("android.intent.action.SCREEN_OFF");
12         filter.addAction("android.intent.action.SCREEN_ON");
13         //注冊廣播接收者
14         this.registerReceiver(screen,filter);
15     }
16 
17     @Override
18     protected void onDestroy() {
19         super.onDestroy();
20         unregisterReceiver(screen);
21     }

 

 1 public class Screen extends BroadcastReceiver {
 2     @Override
 3     public void onReceive(Context context, Intent intent) {
 4         String action = intent.getAction();
 5         if (action.equals("android.intent.action.SCREEN_OFF")){
 6             System.out.println("屏幕鎖屏了");
 7         }else if (action.equals("android.intent.action.SCREEN_ON")){
 8             System.out.println("屏幕解鎖了");
 9         }
10     }
11 }

 

下面是開機自啟:

老套路,新建一個類繼承於BroadcastReceiver,然后配置清單文件

1 <receiver android:name="com.itheima.bootreceiver.BootReceiver">
2             <intent-filter >
3                 <action android:name="android.intent.action.BOOT_COMPLETED"/>
4             </intent-filter>
5         </receiver>

 

然后就是onReceiver方法:

 1 public class BootReceiver extends BroadcastReceiver {
 2 
 3     //當手機重啟會執行這個方法
 4     @Override
 5     public void onReceive(Context context, Intent intent) {
 6 
 7         //開啟mainActivity
 8         Intent intent2 = new Intent(context,MainActivity.class);
 9         //☆ 如果在廣播里面開啟Activity 要設置一個任務棧環境
10         intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
11         //在廣播接收者里面開啟activity
12         context.startActivity(intent2);
13 
14     }
15 
16 }

注意:

intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);一定要加上一個


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM