SMS が受信されるまで停止しなければならない単純なメイン アクティビティがあります...のメソッドMainActivity
内からメソッドを起動するにはどうすればよいですか?BroadcastReceiver
onReceive()
Signal と Wait はありますか? pending で何かを渡すことはできますIntent
か、またはこの通信をどのように実装できますか?
SMS が受信されるまで停止しなければならない単純なメイン アクティビティがあります...のメソッドMainActivity
内からメソッドを起動するにはどうすればよいですか?BroadcastReceiver
onReceive()
Signal と Wait はありますか? pending で何かを渡すことはできますIntent
か、またはこの通信をどのように実装できますか?
BroadcastReceiver から Activity への通信は厄介です。活動がすでになくなっている場合はどうなりますか?
私があなただったら、Activity 内に新しい BroadcastReceiver を設定し、CLOSE メッセージを受け取ります。
private BroadcastReceiver closeReceiver;
// ...
closeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//EDIT: receiving parameters
String value = getIntent().getStringExtra("name");
//... do something with value
finish();
}
};
registerReceiver(closeReceiver, new IntentFilter(CLOSE_ACTION));
次に、SMS BroadcastReceiver から次のアクションを送信できます。
Intent i = new Intent(CLOSE_ACTION);
i.putExtra("name", "value"); //EDIT: this passes a parameter to the receiver
context.sendBroadcast(i);
これが役立つことを願っていますか?
私はまったく同じ問題を抱えていました。インテントを使用しようとしましたが、失敗しました
それを使用する最も簡単な方法は、静的メソッドと静的変数を使用することです
MainActivity.java
public static void stopsms()
{
/*
some code to stop the activity
*/
}
SMSReceiver.java
最後にこの関数を呼び出します
MainActivity.stopsms();
静的メソッドと変数を使用するときにコードが影響しない場合は、驚くほど機能します。助けが必要な場合はお知らせください。
ただし、アクティビティ内で 2 番目のレシーバーを登録する際の問題は、マニフェストに登録する場合のように永続的ではないことです... したがって、このソリューションは機能する可能性がありますが、アクティビティがバックグラウンドで実行されている場合にのみ機能します。
簡単です。次のようなインターフェースを使用してください。
1)ブロードキャストレシーバーでインターフェイスを作成します。
public interface ChangeListener{
public void functionWhoSendData(String type);
public void etc();
}
ブロードキャストレシーバーでそのインターフェイスをインスタンス化し、それを使用します。
public void onReceive(....
String data=functionWhereYouReceiveYouData();
ChangeListener.functionWhoSendData(data);
}
そしてあなたの活動では、それがあなたのインターフェースを実装するようにします