Die Kommunikation zwischen BroadcastReceiver und Aktivität - android

Habe ich einen broadcast receiver in meiner app das ausgelöst wird, jedes mal, wenn der Benutzer erhält einen eingehenden Anruf. Nun, wenn es passiert, muss ich den broadcast receiver aufrufen einer bestimmten Methode bei einer bestimmten Tätigkeit. Nun, ich habe versucht, diese Methode statisch und daher verfügbar, aber etwas sagt mir, es ist eine sehr schlechte Idee.

Entsprechend, habe ich versucht zu instanziieren der broadcast receiver innerhalb meiner Tätigkeit, ohne Sie zu deklarieren in meinem manifest aber das problem ist, wenn die app ausgeschaltet ist, die Aktivität ist nicht vorhanden und deshalb kann ich nicht aufrufen, meine Methode.

Also meine Frage ist - Wie kann ich das aufrufen diese Methode, wenn der broadcast receiver befeuert wird, ohne dass es "public static"?

Hier ist meine Aktivität-code(die ich gelöscht habe die nicht relevanten Teile)

package com.silverfix.ringo.activities;

import com.silverfix.ringo.R;
import com.silverfix.ringo.activities.fragments.DataManagerFragment;

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

public class RingtonesActivity extends Activity{

    private DataManagerFragment dataManagerFragment;
    private IntentFilter filter;
    private BroadcastReceiver phoneCall;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ringtones);
        ActionBar ab = getActionBar();
        ab.setDisplayShowTitleEnabled(false);
        ab.setDisplayHomeAsUpEnabled(true);
        dataManagerFragment = new DataManagerFragment();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(dataManagerFragment, "DataManagerFragment");
        ft.commit();
        filter = new IntentFilter();
        filter.addAction("android.intent.action.PHONE_STATE");
        phoneCall = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
                dataManagerFragment.act();
            }
        };
        registerReceiver(phoneCall, filter);
    }
}
wenn u erhalten die nennen Ihre Anwendung ist, stellt sich in den hintergrund.also, was u tun mit Aktivität(als ur-app im hintergrund)??
bedeutet, dass die Methode unbedingt in Activity Klasse?
Was macht die Methode???
Sie haben zu verwenden, pendingIntent zu Benachrichtigen.
Deklarieren Sie die Methode im gleichen fragment, in dem Sie sich registrieren dem broadcast oder Erstellen Sie eine helper-Klasse verschieben der Methode in diesem. durch erstellen des Objekt dieser Klasse. Sie werden in der Lage, dies zu tun.

InformationsquelleAutor David Lasry | 2015-01-22

Schreibe einen Kommentar