国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

廣播BroadcastReceiver加(系統廣播電話狀態)

2019-11-11 00:33:06
字體:
來源:轉載
供稿:網友

版權聲明:本文為博主原創文章,大家可以一起學習,一起進步!

今天簡單的了解了一下廣播,在這里給大家簡單的分享下我的收獲! 據我簡單的了解,廣播分為靜態廣播與動態廣播,黏性廣播,在這里我給大家簡單的說下吧! 1,優先級動態廣播的優先級比靜態廣播高 2,動態廣播無需在AndroidManifest.xml中聲明即可直接使用,也即動態;而靜態廣播則需要,有時候還要在AndroidManifest.xml中加上一些權限的聲明 3,靜態廣播在應用程序退后也能收到廣播,動態廣播在應用程序退出之后是收不到廣播的。 4,粘性廣播呢現在是屬于過時的,但是還是可以用的,他可以解決動態廣播在應用程序退出后不能收到廣播的問題,啟動應用程序后就會收到之前發的廣播,但是粘性廣播是要在配置文件中添加權限的

<!--添加發送黏性廣播的權限--><uses-permission android:name="android.permission.BROADCAST_STICKY"></uses-permission>

廢話不多說,下面來通過一個簡單的例子看下靜態廣播: 首先,對于靜態廣播,我們需要在AndroidManifest.xml聲明。

<receiver android:name=".MyReceived01"><intent-filter><action android:name="com.zking.g150831_android20_sender.520"></action> </intent-filter> </receiver>

activity_main.xml(發送者布局文件中的代碼):

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.zking.g150831_android20_sender.MainActivity"> <EditText android:id="@+id/et_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="請輸入廣播的內容" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="send" android:text="發送" /></LinearLayout>

MainActivity發送者里的代碼:

package com.zking.g150831_android20_sender;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;public class MainActivity extends AppCompatActivity { PRivate EditText editText; private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.et_content); intent = new Intent();//設置廣播的名字(設置action) intent.setAction("com.zking.g150831_android20_sender.520"); } public void send(View view) { String content = editText.toString(); //攜帶數據 intent.putExtra("data", content); //發送廣播 sendBroadcast(intent); //發送粘性廣播 // sendStickyBroadcast(intent); }}

好了發送者寫完了我們接下來寫接受者 接收靜態廣播,首先要新建一個類繼承BroadcastReceiver,實現它里面的onReceive方法

package com.zking.g150831_android20_received01;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;/** * Created by Administrator on 2017/2/7. */public class MyReceived01 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("com.zking.g150831_android20_sender.520".equals(intent.getAction())) { } String data = intent.getStringExtra("data"); Log.i("test", "01號接受者收到廣播了" + data); }}

可以看到,靜態廣播不需要在代碼中注冊,下面我們看下動態廣播: 首先不需要在AndroidManifest.xml聲明,直接在代碼中注冊,不過最后必須要在onDestroy里面注銷

package com.zking.g150831_android20_received01;import android.content.IntentFilter;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity { private MyReceived01 myReceived01; private IntentFilter intentFilter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myReceived01 = new MyReceived01(); intentFilter = new IntentFilter(); intentFilter.addAction("com.zking.g150831_android20_sender.520"); } @Override protected void onResume() { super.onResume(); //動態注冊廣播 registerReceiver(myReceived01,intentFilter); } //銷毀 @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(myReceived01); }}

發送粘性廣播只要把sendBroadcast(intent)改成sendStickyBroadcast(intent)即可

public void send(View view) { String content = editText.toString(); //攜帶數據 intent.putExtra("data", content); //發送廣播 // sendBroadcast(intent); //發送粘性廣播 sendStickyBroadcast(intent); }

好了,簡單的靜態廣播,動態廣播,粘性廣播就在上面了,下面我在給大家講下系統廣播,在這里我簡單用系統廣播之電話狀態給大家舉個例子

話不多說,我們直接上效果圖 這里寫圖片描述效果圖

當我們外部手機打電話過來的時候,當前的信息會自動的進行改變。好了下面我們直接上代碼!

activity代碼: package com.zking.g150831_android20_phonestate; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; import android.widget.Toast;

/** * Created by Administrator on 2017/2/7. */

public class MyPhone extends BroadcastReceiver{

@Overridepublic void onReceive(Context context, Intent intent) { if("android.intent.action.PHONE_STATE".equals(intent.getAction())){ //獲取電話號碼 String number= intent.getStringExtra("incoming_number"); Log.i("test","呼叫來電,"+number);

//獲取電話狀態電話管理者 TelephonyManager tm= (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE); int state=tm.getCallState(); switch (state){ case TelephonyManager.CALL_STATE_RINGING: Log.i(“test”,”來電話了”); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(“test”,”通話中”); break; case TelephonyManager.CALL_STATE_IDLE: Log.i(“test”,”掛斷了”); break;

} }}

}

這里一定要注意,別忘記在配置清單文件中加權限: 這里寫圖片描述 同時在清單文件中配置廣播接受者(即靜態廣播)

哈 哈 好了,全部代碼就在這了,就這么簡單!!很簡單的,其實沒有想象中那么復雜!


上一篇:測試下

下一篇:Spring中StopWatch的使用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新和县| 纳雍县| 灵璧县| 大田县| 丰台区| 新绛县| 尉氏县| 富宁县| 台山市| 修武县| 清苑县| 长丰县| 明溪县| 白山市| 曲阜市| 重庆市| 错那县| 康定县| 阳谷县| 张家界市| 城固县| 元阳县| 句容市| 保亭| 恩平市| 镇坪县| 阿巴嘎旗| 淮安市| 大石桥市| 安新县| 壤塘县| 当涂县| 巩义市| 册亨县| 平陆县| 哈巴河县| 白河县| 漳州市| 万盛区| 栾川县| 舒城县|