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

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

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

2019-11-11 01:51:25
字體:
來源:轉載
供稿:網友

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

今天簡單的了解了一下廣播,在這里給大家簡單的分享下我的收獲! 據我簡單的了解,廣播分為靜態廣播與動態廣播,黏性廣播,在這里我給大家簡單的說下吧! 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;

} }}

}

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

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


上一篇:專題五-內存管理的藝術

下一篇:1084

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辰溪县| 乐清市| 温泉县| 凤阳县| 仲巴县| 建阳市| 湟中县| 丰城市| 黄浦区| 秀山| 昌邑市| 同心县| 正蓝旗| 堆龙德庆县| SHOW| 台安县| 紫金县| 云南省| 分宜县| 太仓市| 四川省| 德安县| 千阳县| 托克逊县| 嘉峪关市| 北流市| 社会| 许昌市| 仁寿县| 长白| 肃南| 金平| 攀枝花市| 乃东县| 德江县| 长宁区| 临沂市| 顺义区| 漾濞| 曲靖市| 天祝|