2014-09-11 29 views
0

我創建一個BroadcastReceiver內ActivityActionBarActivity如何處理在Activity中創建的廣播?

這樣


public class MyTabListner extends ActionBarActivity { 
. 
. 
. 

    public class AppManagerBroadcast extends BroadcastReceiver { 

       @Override 
       public void onReceive(Context context, Intent intent) { 
        boolean applicationStatus = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false); 
        String toastMessage = null; 
        if(intent.getAction().equals("android.intent.action.PACKAGE_INSTALL")){ 
         toastMessage = "PACKAGE_INSTALL: "+ intent.getData().toString(); 


        }else 
        if(intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")){ 
         toastMessage = "PACKAGE_REPLACED: "+ intent.getData().toString() ; 

        }else 
        if(intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")){ 
         toastMessage = "PACKAGE_REMOVED: "+ intent.getData().toString(); 

        } 
        //Display Toast Message 
        if(toastMessage != null){ 
         Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show(); 
        } 
       } 



      } 
. 
. 
. 
} 

我的manifest.xml 這樣註冊

<receiver 
      android:name="com.example.activity.MyTabListner$AppManagerBroadcast" 
      android:enabled="true" > 
      <intent-filter android:priority="1" > 
       <action android:name="android.intent.action.PACKAGE_INSTALL" /> 
       <action android:name="android.intent.action.PACKAGE_REPLACED" /> 
       <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
       <data android:scheme="package" /> 
      </intent-filter> 
     </receiver> 

,但我得到例外是方式。 的例外是。

09-11 17:45:46.434: E/AndroidRuntime(23502): FATAL EXCEPTION: main 
09-11 17:45:46.434: E/AndroidRuntime(23502): java.lang.RuntimeException: Unable to instantiate receiver com.example.activity.MyTabListner$AppManagerBroadcast: java.lang.InstantiationException: can't instantiate class com.example.activity.MyTabListner$AppManagerBroadcast; no empty constructor 

09-11 17:45:46.434: E/AndroidRuntime(23502): Caused by: java.lang.InstantiationException: can't instantiate class com.example.activity.MyTabListner$AppManagerBroadcast; no empty constructor 

當我創造出來的側活動那麼我sucess完全運行我的應用程序,但 我想在我的活動沒有外部活動使用此廣播接收器。 如何避免此異常

回答

1

內部類必須是靜態類。

變化

public class AppManagerBroadcast extends BroadcastReceiver 

public static class AppManagerBroadcast extends BroadcastReceiver 
+0

感謝它的工作 – 2014-09-11 12:37:31

1

在我看來,你必須聲明你的內部類靜態。目前,內部類必須與外部類的實例一起使用,這可能不是你想要的。

相關問題