2014-09-11 3 views
0

я был создан BroadcastReceiver внутри Activity (ActionBarActivity)Как обращаться с трансляцией, созданным внутри 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 

, когда я создал из боковой активности, то я полностью запустить успеха и мое приложение, но я хочу использовать этот BroadcastReceiver в моей деятельностине вне деятельности. Как избежать этого исключения

ответ

1

Внутренний класс должен быть статическим классом.

Изменить

public class AppManagerBroadcast extends BroadcastReceiver 

в

public static class AppManagerBroadcast extends BroadcastReceiver 
+0

спасибо, что это работа –

1

кажется мне, вы должны объявить ваш внутренний класс как статический. В настоящее время внутренний класс должен использоваться с экземпляром внешнего класса, который может быть не таким, каким вы хотите.

Смежные вопросы