質問

私は数回のインテントサービスを数回使用しましたが、現在のアプリでは、SoraStreCeiverのOnReceive()が起動することはできません。IntentServiceのインテントのアクションと、BroadcastReceiverとともにOnResumeに登録されている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>
.

私のログは、IntentBroadcastがインテントサービスからブロードキャストされ、アプリがそこに停止したことを教えてくれます。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(ブロードキャスト)を持つべきです。代わりに

役に立ちましたか?

解決

あなたの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 タスクを実行してシャットアウトするにはコードを積極的に見えるように思われる、 service 代わりに intentService

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top