L'appel d'une méthode d'une Activité de BroadCastReceiver classe sans la création de l'instance d'activité

Je veux faire exactement la même chose mentionné dans la question dans le lien suivant L'appel d'une activité de méthode à partir d'un BroadcastReceiver classe. Mais la solution donnée il n'y a pas de travail pour moi et je ne peux pas commenter là que je n'ai pas assez de réputation. J'ai fait tout ce qui est mentionné dans la solution, mais mon récepteur de radiodiffusion ne fonctionne pas avec ce code.

Je veux juste appeler la méthode dans l'activité de réception de la demande de diffusion sans la création d'une instance de l'activité. Peut-il être fait?

EDIT: Maintenant, je suis en ajoutant le code.

Voici ma classe MainActivity

public class MainActivity extends Activity {

    public static final String TAG="App1";
    private ActionReceiver receiver = null;

    //private YourBroadcastReceiverClassName yourBR = null;

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

        //receiver= new ActionReceiver();
        //IntentFilter filter = new IntentFilter();
        //filter.addAction("com.example.app1.printSomething");

        //printSomething();

    }

    public void printSomething(){
        Toast.makeText(this,"Hello World",Toast.LENGTH_LONG);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

  }

C'est mon ActionReceiver classe qui est BroadcastReceiver

public class ActionReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        if("com.example.app1.printSomething".equalsIgnoreCase(intent.getAction()))
            Toast.makeText(context,"Hello World", Toast.LENGTH_LONG).show();
    }
}

C'est mon AndroidManifest.xml fichier:

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

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

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

</manifest>

Maintenant, je veux l'appeler printSomething() Méthode écrite dans MainActivity de onReceive() dans ActionReceiver classe. Mais je ne veux pas lancer MainActivity. Peut-il être fait?

Bonjour @Kiran...Même moi, je suis en train d'activer/désactiver un bouton de MainActivity à partir d'un récepteur de radiodiffusion...Votre question est-ce lié à cela.Avez-vous trouvez une solution pour cela..Si oui,merci de le partager....
Salut @PrathibhaKirthi je l'ai fait dans hardway. Je me suis inscrit à un récepteur de radiodiffusion pour mainactivity et je l'utilise pour appeler la méthode.
J'ai fait la même @KIran..travail.. 🙂

OriginalL'auteur Kiran | 2013-10-10