我试图在Android中进行简单广播以检测屏幕是否已开启。对我来说,这是一个了解Android广播功能的学习方法。请帮忙。 我有Android XML
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".UsbddActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
</application>
主Java文件
package usb.usbd;
import android.app.Activity;
import android.os.Bundle;
public class UsbddActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
应该显示吐司的Broadcast类。
package usb.usbd;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class BootReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
Toast.makeText( arg0, "worked", Toast.LENGTH_LONG).show();
run(arg0 );
}
public void run(Context arg0 ) {
Toast.makeText(arg0, "sss", Toast.LENGTH_SHORT).show();
}
}
它不会显示任何错误,也不显示吐司。如何在屏幕打开时显示祝酒词。
答案 0 :(得分:1)
查看此网站:http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/
首先,与其他广泛的意图不同,对于Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON,您不能在Android Manifest中声明它们!
您可以通过获取ReceiveBootComplete权限,然后使用注册Intent Filter的onBootReceiver启动服务来处理此问题。听起来很复杂,但在这个网站上也有一个很好的例子。
/编辑:啊,我刚看到它在示例中由onResume和onPause完成。这可能是一种方式,但我不推荐它。看到这个问题:Service and a BroadCastReceiver 在那里解释了如何在服务中注册接收器。 此链接介绍了如何在启动时启动服务:http://www.androidcompetencycenter.com/2009/06/start-service-at-boot/