0

SMS を使用してデータを受信し、データベースに保存するアプリを開発しています。また、データベースからのクエリの結果を表示するアクティビティがあります。ここで、この特別なアクティビティが開いていて、新しいメッセージが sms-receiver のコードに到着した場合、このアクティビティを再起動します。このアクティビティが開いていなければ、何も起こりません。

4

1 に答える 1

1

BroadcastReceiverアクティビティの更新を実行するアクティビティに を登録できます。

public class YourActivity extends Activity {

    private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
           // refresh UI or finish activity and start again
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        IntentFilter filter = new IntentFilter("ACTION_REFRESH_UI");
        registerReceiver(myReceiver, filter);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        unregisterReceiver(myReceiver);
    }
}

新しいメッセージがデータベースに保存されるたびにブロードキャストを送信します。

Intent intent = new Intent();
intent.setAction("ACTION_REFRESH_UI");
sendBroadcast(intent);

変更について通知され、ブロードキャストを送信するデータベースのコンテンツ オブザーバーを追加することもできます (詳細については、この例を参照してください)。

于 2015-03-10T21:39:56.923 に答える