2013-12-20 84 views
1

(對不起,我的英文不太好)Android手機關機時的廣播接收器

我是Android的begginer。所以我想用一個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); 
} 

回答

0

移動你的BroadcastReceiver到一個單獨的類。在您的清單中,您聲明「com.example.broadcastreceiver.MainActivity」爲ActivityBroadcastReceiver,但事實並非如此。這只是一個Activity。它不可能是兩個。

+0

+1非常感謝:) – user3123469