屏幕打开时,在Android广播上显示Toast。

时间:2011-10-14 19:02:51

标签: android

我试图在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(); 
        } 


}

它不会显示任何错误,也不显示吐司。如何在屏幕打开时显示祝酒词。

1 个答案:

答案 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/