參考博客:https://blog.csdn.net/chuyouyinghe/article/details/79424373
照着書上的源碼將程序原封不動敲了一遍,但發現這特么怎么也收不到發出的廣播
-
<receiver android:name= ".MyBroadCastReceiver"
-
android:permission= "com.example.Broadcasttest.MY_BROADCAST">
-
<intent-filter>
-
<action android:name= "com.example.Broadcasttest.MY_BROADCAST"/>
-
</intent-filter>
-
</receiver>
-
</application>
如上代碼,我在manifest中也注冊了
再看這里
-
Button button = (Button) findViewById(R.id.button);
-
button.setOnClickListener( new View.OnClickListener(){
-
-
public void onClick(View v){
-
Intent intent = new Intent();
-
intent.setAction( "com.example.Broadcasttest.MY_BROADCAST");
-
sendBroadcast(intent);
-
}
-
});
心里當時一萬個草泥馬路過,我在自定義的廣播接收類里面的onReceive里面用Log打印了信息,發現這個函數壓根就沒有運行,於是我上網百度了一波.不得不說這個地方還是相當的坑的
因為,我用的虛擬機的安卓版本是8.0,但是,8.0,取消了大部分靜態注冊!!!
一般來說,出現自定義的廣播接收器接收不到信息的原因,有如下幾個
1,Manifest里面沒有注冊
2,注冊了但是Action里面那個android:name與Intent.setAction()的參數不匹配
3,就是系統的原因了,前兩個一般設置代碼跟蹤可以找得出,但第三個一般不容易,只能上網查一查了
所以這里這個問題的解決辦法就只能是將虛擬機的安卓版本調低一點.好像是7.0以下都能
