Pregunta

He utilizado con éxito intentservice unas cuantas veces, pero en la aplicación actual, no puedo obtener la OneReceive () de Broadcrecreiver () para comenzar.Tengo la cadena exacta en la acción de la intención del intentador y en el intencionfilter que se registró en OnResume junto con el BroadcastReceiver.

    filter = new IntentFilter("com.currencyconverter2.intent.action.MESSAGE");
    Log.d("CC2", "intent filter created");
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    Log.d("CC2", "filter category added");
    receiver = new MessageReceiver();
    Log.d("CC2", "receiver instantiated");
}

public void onResume(){
    super.onResume();
    registerReceiver(receiver, filter);
    Log.d("CC2", "receiver registered");
}

public void onPause(){
    super.onPause();
    unregisterReceiver(receiver);
    Log.d("CC2", "receiver unregistered");
}

public class MessageReceiver extends BroadcastReceiver{
    public void onReceive(Context context, Intent intent){
        Log.d(Tag, "entered onReceive...");
        String html = intent.getStringExtra("OUTPUT");
        webView.setBackgroundColor(Color.parseColor("#f4f36f"));
        webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
    }
}

También especificé el servicio en Manifest.xml.

<service android:name=".IntentServiceTest"></service>

Mi registro me dice que la intención se emitió desde el intentador, y la aplicación se detuvo allí.BroadcastReceiver no parecía haberlo recibido.¿Qué puede estar mal?¡Gracias!

Editar:

mi intentservice

        Intent broadcastIntent = new Intent();
        Log.d(Tag, "setting intent action");
        broadcastIntent.setAction("com.currencyconverter2.intent.action.MESSAGE");
        Log.d(Tag, "adding intent category");
        broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
        Log.d(Tag, "putting intent extra");
        broadcastIntent.putExtra("OUTPUT", data.text());
        Log.d(Tag, "sending broadcast");
        sendBroadcast(intent);

    }catch(Exception e){
        e.printStackTrace();
        //System.out.println("f");
    }
}

}

Editar 2:

encontrado el error.

                          Intent broadcastIntent = new Intent();
        Log.d(Tag, "setting intent action");
        broadcastIntent.setAction("com.currencyconverter2.intent.action.MESSAGE");
        Log.d(Tag, "adding intent category");
        broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
        Log.d(Tag, "putting intent extra");
        broadcastIntent.putExtra("OUTPUT", data.text());
        Log.d(Tag, "sending broadcast");
        sendBroadcast(intent);

Debería haber enviado (BroadcastIntent);en vez.

¿Fue útil?

Solución

Revise su AndroidManifest.xml:

<receiver android:name=".MessageReceiver">
<intent-filter>
<action android:name="com.currencyconverter2.intent.action.MESSAGE" />
<category android:name="android.intent.category.Default" />
</intent-filter>
</receiver>

^ - ^

Otros consejos

intentservice Use para hacer tareas y apagarlo, pero comoPar Su código Parece que estás usando un tiempo de funcionamiento largo, use servicio en su lugarde intentservice

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top