導航:首頁 > 操作系統 > android廣播監聽注冊

android廣播監聽注冊

發布時間:2022-08-15 07:36:35

android為什麼監聽不到應用覆蓋安裝的廣播

這里的廣播是指你app里的廣播還是手機系統的廣播。
如果是你自己手機的app的廣播,你是否有注冊監聽廣播。
如果是手機系統的廣播,因為以前所有的app開啟及運行,都以監聽手機開機廣播,後來開發商直接攔截,不讓app監聽手機開機等廣播。

㈡ android開發怎麼監控來電並監聽

實現如下廣播,並且在AndroidManifest中進行注冊

public class PhoneReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
System.out.println("action"+intent.getAction());
//如果是去電
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
String phoneNumber = intent
.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.d(TAG, "call OUT:" + phoneNumber);
}else{
//查了下android文檔,貌似沒有專門用於接收來電的action,所以,非去電即來電.
//如果我們想要監聽電話的撥打狀況,需要這么幾步 :
* 第一:獲取電話服務管理器TelephonyManager manager = this.getSystemService(TELEPHONY_SERVICE);
* 第二:通過TelephonyManager注冊我們要監聽的電話狀態改變事件。manager.listen(new MyPhoneStateListener(),
* PhoneStateListener.LISTEN_CALL_STATE);這里的PhoneStateListener.LISTEN_CALL_STATE就是我們想要
* 監聽的狀態改變事件,初次之外,還有很多其他事件哦。
* 第三步:通過extends PhoneStateListener來定製自己的規則。將其對象傳遞給第二步作為參數。
* 第四步:這一步很重要,那就是給應用添加許可權。android.permission.READ_PHONE_STATE

TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
//設置一個監聽器
}
}
PhoneStateListener listener=new PhoneStateListener(){

@Override
public void onCallStateChanged(int state, String incomingNumber) {
//注意,方法必須寫在super方法後面,否則incomingNumber無法獲取到值。
super.onCallStateChanged(state, incomingNumber);
switch(state){
case TelephonyManager.CALL_STATE_IDLE:
System.out.println("掛斷");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
System.out.println("接聽");
break;
case TelephonyManager.CALL_STATE_RINGING:
System.out.println("響鈴:來電號碼"+incomingNumber);
//輸出來電號碼
break;
}
}

㈢ android用broadcastreceiver監聽網路

採用Service+BroadcastReceiver的形式實時監聽網路變化。
原理是程序在背後啟一個Service,在Service中注冊一個廣播,當網路變化時會產生一個ConnectivityManager.CONNECTIVITY_ACTION事件,只要監聽這個事件就可以了。JAVA代碼如下:
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.IBinder;
import android.util.Log;

public class NetworkStateService extends Service{

private static final String tag="tag";
private ConnectivityManager connectivityManager;
private NetworkInfo info;

private BroadcastReceiver mReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
Log.d(tag, "網路狀態已經改變");
connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
info = connectivityManager.getActiveNetworkInfo();
if(info != null && info.isAvailable()) {
String name = info.getTypeName();
Log.d(tag, "當前網路名稱:" + name);
//doSomething()
} else {
Log.d(tag, "沒有可用網路");
//doSomething()
}
}
}
};

@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}

@Override
public void onCreate() {
super.onCreate();
IntentFilter mFilter = new IntentFilter();
mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mReceiver, mFilter);
}

@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}

}
別忘了在Manifast中配置這個Service:
Xml代碼 收藏代碼
<service android:enabled="true" android:name="com.reyo.util.NetworkStateService" />

還有許可權:
Xml代碼 收藏代碼
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在必要的地方啟動該Service即可:
Java代碼 收藏代碼
Intent i=new Intent(context,NetworkStateService.class);
startService(i);

㈣ android 如何監聽程序安裝完成

  1. android系統中,當應用安裝完成以後會發出一個廣播action的值為android.intent.action.PACKAGE_ADDED。只要監聽這個廣播就可以了。

  2. 監聽方法,創建一個BroadcastReceiver,注冊時添加過濾器,過濾器中添加以上action。

  3. 完成以上步驟,當應用安裝完成後,你的應用就會收到廣播。

㈤ Android使用廣播監聽網路狀態變化 一直收到系統廣播

因為這個系統廣播在不停的發送,系統網路狀態在不停的變化。比如關閉,打開,掃描,正在連接,已連接等狀態。

㈥ android廣播接收者需要注冊嗎

廣播接受者分為系統廣播 和用戶自定義廣播,
系統廣播需要添加相應的許可權,才能監聽到廣播的發出,比如 鎖屏,電源,等等
自定義廣播是需要自己注冊的,

㈦ android開發怎麼監聽網路請求

Android中網路情況時有變化,比如從有網到沒網,從wifi到gprs,gprs又從cmwap到cmnet...等等!
如果你的程序有些功能是需要網路支持的,有時候就需要監聽到網路的變化情況進行相應的處理。
比如說下載一個文件,如果突然斷網了,怎麼處理?網路又恢復了,如何監聽到並重連?

當網路變化的時候系統會發出義個廣播broadcast,只要在程序中注冊一個廣播接收器BroadcastReceiver,並在IntentFilter中添加相應的過濾,這樣一旦網路有變化,程序就能監聽到
public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
private void registerDateTransReceiver() {
Log.i(TAG, "register receiver " + CONNECTIVITY_CHANGE_ACTION);
IntentFilter filter = new IntentFilter();
filter.addAction(CONNECTIVITY_CHANGE_ACTION);
filter.setPriority(1000);
registerReceiver(new MyReceiver(), filter);
}

在MyReceiver中:
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "PfDataTransReceiver receive action " + action);
if(TextUtils.equals(action, CONNECTIVITY_CHANGE_ACTION)){//網路變化的時候會發送通知
Log.i(TAG, "網路變化了");
return;
}
}

當網路變化時,從有網到沒網也會發廣播,就舉的例子來說,如果下載時斷網了,接收到廣播的時候要判斷當前網路是可用還是不可用狀態,如果可用進行什麼操作;不可用進行什麼操作:
public static NetworkInfo getActiveNetwork(Context context){
if (context == null)
return null;
ConnectivityManager mConnMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (mConnMgr == null)
return null;
NetworkInfo aActiveInfo = mConnMgr.getActiveNetworkInfo(); // 獲取活動網路連接信息
return aActiveInfo;
}

這個方法返回的aActiveInfo可以判斷網路的有無,如果返回的是null,這時候是斷網了,如果返回對象不為空,則是連上了網。在返回的NetworkInfo對象里,可以有對象的方法獲取更多的當前網路信息,比如是wifi還是cmwap等,就不多說了。

閱讀全文

與android廣播監聽注冊相關的資料

熱點內容
程序員偏右 瀏覽:16
超算上可以進行vasp編譯嘛 瀏覽:174
北京通app怎麼注冊登錄 瀏覽:820
iphone上的數據怎麼轉移到安卓 瀏覽:743
python求每個時段平均值 瀏覽:244
安卓手機右上出現Hg什麼意思 瀏覽:69
程序員神經 瀏覽:753
dns伺服器在電腦上有什麼用 瀏覽:915
杭州大媽喜歡程序員 瀏覽:687
python評論樹講解 瀏覽:680
juniper防火牆常用命令 瀏覽:426
vapp怎麼下載地址 瀏覽:11
pdf裡面內容怎麼修改 瀏覽:807
收藏網址加密的瀏覽器 瀏覽:1000
phpurl問號 瀏覽:898
什麼筆記本電腦可以用python 瀏覽:136
加密相冊如何翻找 瀏覽:992
泰州地區DNS伺服器地址 瀏覽:849
一種app可以買菜用英語怎麼說 瀏覽:197
中國聯通app裡面通話詳單怎麼刪除 瀏覽:505