Android BroadcastReceiver 接收收到短信的廣播


一、知識介紹

  1、broadcastReceiver是廣播接受者,四大組件之一。

  2、Android中內置了很多系統級別的廣播,可以在應用程序中得到各種系統的狀態信息。

  3、使用場景:

      ①當手機沒有電時,會告知用戶“電量低”的廣播信息。可以做到正在使用的app就會接收到這個廣播消息,如果是游戲可能是提醒保存數據,如果是正在使用的工作軟件,可能提醒接上電源。

      【提示】對於某某程序來說,可以選擇接收這一消息也可以選擇不接收這個消息。

      ②手機的storage不夠了,提示你清理空間,否則應用程序將變慢或者無法使用。

      ③手機一開機,某某程序就自動運行,QQ、微信都是開機自啟。

  4、一個程序發出廣播信息,一個程序接收廣播信息,所以至少需要2個程序才能完成一發一收。發的一方,叫廣播發送方;收的一方,叫廣播接收者。

  5、廣播接受者需要進行注冊。動態注冊,靜態注冊(在AndroidManiFest文件中)

  

二、項目實踐

【步驟】

  ①定義廣播接受者

  ②進行注冊,添加過濾器 intent-filter,接收特定的廣播

  ③重寫onReceiver方法,如果執行,代表已經接收到廣播

  ④定義收到信息廣播接收者,屬於系統廣播,則需要申請權限(靜態,動態)

【項目結構】

    

【提示】創建Receiver可以通過以下方式

    此方法會自動在AndroidManifest中進行注冊receiver,但是需要接收固定的廣播,仍需添加intent-filter

    

    

 【AndroidManifest】  

1         <receiver 2             android:name=".receiver.MsgReceiver"
3  android:enabled="true"
4  android:exported="true">
5             <intent-filter>
6                 <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
7                 <!--接收收到信息的廣播-->
8             </intent-filter>
9         </receiver>

【MsgReceiver】

  重寫onReceiver方法,添加Toast

 1 import android.content.BroadcastReceiver;  2 import android.content.Context;  3 import android.content.Intent;  4 import android.widget.Toast;  5 
 6 public class MsgReceiver extends BroadcastReceiver {  7 
 8  @Override  9     public void onReceive(Context context, Intent intent) { 10         // TODO: This method is called when the BroadcastReceiver is receiving 11         // an Intent broadcast.
12         Toast.makeText(context, "收到信息", Toast.LENGTH_SHORT).show(); 13         //添加Toast便於觀察
14  } 15 }

 

【添加權限】

  ①靜態權限:【AndroidManifest】   

1    <uses-permission android:name="android.permission.READ_SMS"></uses-permission>
2     <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

  ②動態權限【MainActivity】

import android.Manifest; import android.content.pm.PackageManager; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS)!= PackageManager.PERMISSION_GRANTED|| ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.RECEIVE_SMS) !=PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_SMS,Manifest.permission.RECEIVE_SMS}, 1); }//動態申請權限
 } }

 

【測試】

  ①操作

    

 

  ②效果

     

 

 【小結】

   ①這里是接收系統廣播,也可以自己定義廣播。以及可以添加很多功能,接收到廣播進行特定的操作。

   ②廣播必須添加過濾器,對特定的廣播進行接收

   ③如果是接收系統廣播要進行權限的申請,5.0之后一定要進行動態權限申請才可以

 

 

    

 


免責聲明!

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



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