BroadcastReceiver を使い始めたばかりです (これは私の問題かもしれません)。私はサービスからビューを作成しようとしています (はい、はい、あなたができないことを知っています) ので、必要なときに目に見えるビューを作成するために、目に見えないアクティビティにリクエストを送信していました。思ったように機能していなかったので、BroadcastReceivers を調べました。これまでのところ、 getStringExtra の値を何かと比較できないという例外を除いて、すべてが機能しています。例)文字列「CREATE」の値を持つ変数「param」をBroadcastReceiverに渡したいとします。それは私の受信機に問題なく届き、logcatを使用すると、実際にメソッドが「CREATE」であることがわかります。しかし、if ステートメント if (param=="CREATE") でどの param かを確認したい場合、if に入ることはありません。それで、私はここで何が間違っていますか?
public class Receiver extends BroadcastReceiver{
@Override
public void onReceive(Context c, Intent i) {
String stuff = i.getStringExtra("param");
log(stuff);
if (stuff=="CREATE"){
log("why dem feels");
}
if((String)i.getStringExtra("method")=="CREATE"){
log("i dont know what im doing");
}
log("FOR SOME REASON ITS SKIPPING THIS STEP");
}
//set of logs so that i dont have to keep specifying tags and shit
public void log(int in){
Log.d("TAG OF INTEGERS",Integer.toString(in));
}
public void log(String s){
Log.d("Receiver",s);
}
public void log(float f){
log((int) f);
}
}
これは、ブロードキャストを送信するためにサービスで使用しているコードです
Intent i = new Intent();
i.setClassName("com.example.starteroverlay","com.example.starteroverlay.Receiver");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
String methodCall = "CREATE";
i.putExtra("param",methodCall);
//
sendBroadcast(i);
そして、皆さんが私のマニフェストの一部をコードで見たいと思うと思うからです
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<receiver android:name=".Receiver">
<intent-filter android:priority="0">
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</receiver>