Приемник Android-трансляции, когда телефон выключен

(извините за мой английский, я не очень хорошо говорю)

Я новичок в Android. Поэтому я хотел бы просто протестировать приложение с эмулятором Android, который отображает на консоли только сообщение о том, что телефон выключен.

Приложение, которое я сделал, ничего не отображает, когда я выключаю эмулятор.

Можете ли вы объяснить, почему, пожалуйста?

в манифесте

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.anotherbroadcast"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.broadcastreceiver.MainActivity"
            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="com.example.broadcastreceiver.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.ACTION_SHUTDOWN" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

Класс Главный

public class MainActivity extends Activity {

private BroadcastReceiver the_receiver = new BroadcastReceiver(){

    @Override
    public void onReceive(Context c, Intent i) {
                if(i.getAction().equals("android.intent.action.ACTION_SHUTDOWN")){
                     System.out.println("the phone is switched off");      
                 }
    }};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

1 ответ

Решение

Переместить ваш BroadcastReceiver в отдельный класс. В своем манифесте вы объявили "com.example.broadcastreceiver.MainActivity" как Activity и BroadcastReceiver, но это не так. Это только Activity, И это не может быть и то и другое.

Другие вопросы по тегам