安卓系統5.1.0和安卓系統8.1.0下接收廣播的不同
阿新 • • 發佈:2018-12-10
靜態廣播 。。。。 低版本安卓系統5.1.0廣播方式 Intent mIntent=new Intent("com.activity.MainActivity"); //這裡的intent(action...) 對應的是一個自定義的唯一字串,用來與接收廣播端一一對應。 context.sendBroadcast(mIntent);//傳送廣播
高版本安卓系統8.1.0廣播
。。。。
Intent mIntent=new Intent("com.activity.MainActivity");
//mIntent.setComponent。。。用來解決安卓8.1.0無法接受到廣播的問題。注意接收方如果為內部類則用$符號分割
mIntent.setComponent(new
ComponentName(context,"com.activity.MainActivity$MessageReceiver"));//注意接收方如果為內部類則用$符號分割
context.sendBroadcast(mIntent);//傳送廣播
廣播接收端是內部類
<!--靜態註冊廣播-->AndroidManifest.xml <receiver android:name=".MainActivity$MessageReceiver" android:enabled="true" android:exported="true"> <intent-filter> <!--自定義action--> <action android:name="com.activity.MainActivity"/> </intent-filter> </receiver>
接收廣播的是activity裡的內部類MessageReceiver public class MainActivity extends Activity {
。。。。。。。。。。。。。
public static class MessageReceiver extends BroadcastReceiver
{ public MessageReceiver(){ } @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals(“com.activity.MainRongActivity”)) { ....... intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } } } }
。。。。。。}
這樣之後不管是高版本還是低版本安卓系統都能收到廣播了