문제

몇 번에 IntEnterVICE를 성공적으로 사용했지만 현재 응용 프로그램에서 BroadCastReceiver의 Onreceive ()를 시작할 수 없습니다.본인은 Broadcastreceiver와 함께 Onresume에 등록 된 INTENTService 및 IntentFilter의 의도의 인트의 조치에 정확한 문자열을 가지고 있습니다.

    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);
    }
}
.

나는 또한 manifest.xml에서 서비스를 지정했습니다.

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

내 로그는 IntentSriver가 IntentService에서 브로드 캐스팅되었으며 앱이 거기에서 멈췄다 고 알려줍니다.Broadcastreceiver는받은 것으로 보이지 않았습니다.무엇이 잘못 될 수 있습니까?감사합니다!

편집 :

내 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");
    }
}

}
.

편집 2 :

버그를 찾았습니다.

                          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);
.

SendBroadCast (Broadcastintent)가 있어야합니다.대신.

도움이 되었습니까?

해결책

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>
.

^ - ^

다른 팁

IntentService 작업을 수행하고 셧아웃 히지 만u가 오래 실행되는 시간을 사용하고있는 것처럼 보이는 코드를 사용하고, 서비스 대신 IntentService

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top