Android BroadcastReceiver接收收到短信的廣播
一、知識(shí)介紹
1、broadcastReceiver是廣播接受者,四大組件之一。
2、Android中內(nèi)置了很多系統(tǒng)級(jí)別的廣播,可以在應(yīng)用程序中得到各種系統(tǒng)的狀態(tài)信息。
3、使用場(chǎng)景:
①當(dāng)手機(jī)沒有電時(shí),會(huì)告知用戶“電量低”的廣播信息。可以做到正在使用的app就會(huì)接收到這個(gè)廣播消息,如果是游戲可能是提醒保存數(shù)據(jù),如果是正在使用的工作軟件,可能提醒接上電源。
【提示】對(duì)于某某程序來說,可以選擇接收這一消息也可以選擇不接收這個(gè)消息。
②手機(jī)的storage不夠了,提示你清理空間,否則應(yīng)用程序?qū)⒆兟蛘邿o法使用。
?、凼謾C(jī)一開機(jī),某某程序就自動(dòng)運(yùn)行,QQ、微信都是開機(jī)自啟。
4、一個(gè)程序發(fā)出廣播信息,一個(gè)程序接收廣播信息,所以至少需要2個(gè)程序才能完成一發(fā)一收。發(fā)的一方,叫廣播發(fā)送方;收的一方,叫廣播接收者。
5、廣播接受者需要進(jìn)行注冊(cè)。動(dòng)態(tài)注冊(cè),靜態(tài)注冊(cè)(在AndroidManiFest文件中)
二、項(xiàng)目實(shí)踐
【步驟】
①定義廣播接受者
?、谶M(jìn)行注冊(cè),添加過濾器 intent-filter,接收特定的廣播
③重寫onReceiver方法,如果執(zhí)行,代表已經(jīng)接收到廣播
?、芏x收到信息廣播接收者,屬于系統(tǒng)廣播,則需要申請(qǐng)權(quán)限(靜態(tài),動(dòng)態(tài))
【項(xiàng)目結(jié)構(gòu)】

【提示】創(chuàng)建Receiver可以通過以下方式
此方法會(huì)自動(dòng)在AndroidManifest中進(jìn)行注冊(cè)receiver,但是需要接收固定的廣播,仍需添加intent-filter


【AndroidManifest】
<receiver
android:name=".receiver.MsgReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
<!--接收收到信息的廣播-->
</intent-filter>
</receiver>
【MsgReceiver】
重寫onReceiver方法,添加Toast
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class MsgReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
Toast.makeText(context, "收到信息", Toast.LENGTH_SHORT).show();
//添加Toast便于觀察
}
}
【添加權(quán)限】
①靜態(tài)權(quán)限:【AndroidManifest】
<uses-permission android:name="android.permission.READ_SMS"></uses-permission> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
②動(dòng)態(tài)權(quán)限【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);
}//動(dòng)態(tài)申請(qǐng)權(quán)限
}
}
【測(cè)試】
①操作

②效果

【小結(jié)】
?、龠@里是接收系統(tǒng)廣播,也可以自己定義廣播。以及可以添加很多功能,接收到廣播進(jìn)行特定的操作。
?、趶V播必須添加過濾器,對(duì)特定的廣播進(jìn)行接收
③如果是接收系統(tǒng)廣播要進(jìn)行權(quán)限的申請(qǐng),5.0之后一定要進(jìn)行動(dòng)態(tài)權(quán)限申請(qǐng)才可以
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android的ListView點(diǎn)擊item使item展開的做法的實(shí)現(xiàn)代碼
這篇文章主要介紹了android的ListView點(diǎn)擊item使item展開的做法的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12
Android使用Realm數(shù)據(jù)庫(kù)實(shí)現(xiàn)App中的收藏功能(代碼詳解)
這篇文章主要介紹了Android使用Realm數(shù)據(jù)庫(kù)實(shí)現(xiàn)App中的收藏功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Android編程實(shí)現(xiàn)列表側(cè)滑刪除的方法詳解
這篇文章主要介紹了Android編程實(shí)現(xiàn)列表側(cè)滑刪除的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android列表側(cè)滑刪除功能的原理與具體實(shí)現(xiàn)技巧,注釋中包含詳盡的說明,需要的朋友可以參考下2018-01-01
Android動(dòng)態(tài)給ViewPager添加Indicator導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了Android動(dòng)態(tài)給ViewPager添加Indicator導(dǎo)航的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android判斷當(dāng)前應(yīng)用程序處于前臺(tái)還是后臺(tái)的兩種方法
這篇文章主要介紹了Android判斷當(dāng)前應(yīng)用程序處于前臺(tái)還是后臺(tái)的兩種方法,有需要的朋友可以參考一下2013-12-12
Android利用Camera實(shí)現(xiàn)中軸3D卡牌翻轉(zhuǎn)效果
這篇文章主要介紹了Android利用Camera實(shí)現(xiàn)中軸3D卡牌翻轉(zhuǎn)效果,需要的朋友可以參考下2015-12-12

