[英]onReceive never called
我有以下代碼,我想檢測手機的屏幕,但是永遠不會調用onReceive函數,任何人都可以給我解決方案。 請幫忙。 如果有人還有其他工作代碼,請提供幫助。 謝謝
package com.pack;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
public class Screen extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
Context con = this;
this.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("Screen off...................");
}
}, new IntentFilter(Intent.ACTION_SCREEN_OFF));
}
}
您的代碼對我有用。 我修改了代碼,以使其更易於閱讀和添加一些sysout,但是它的工作方式與您編寫代碼的方式相同:
public class Test extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("Screen off...................");
}
}, filter);
}
@Override
protected void onResume() {
super.onResume();
System.out.println("onResume()");
}
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("onDestroy()");
}
@Override
protected void onPause() {
super.onPause();
System.out.println("onPause()");
}
如果執行此操作,它將打印以下內容(開始活動,關閉屏幕,打開屏幕,按返回按鈕):
onResume()
onPause()
Screen off...................
onResume()
onPause()
onDestroy()
此后,活動被銷毀,因此不顯示任何事件。 也許您想改為在AndroidManifest中注冊您的BroadcastReceiver。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.