0

重複の可能性:
BroadcastReceiver から開始中のアクティビティにデータを渡すにはどうすればよいですか?

私の Android アプリケーションには、 という名前のメイン アクティビティと という名前Appの BroadcastReceiver がありSmsReceiverます。onReceive()のメソッド内でSmsReceiver、SMS をキャッチし、その内容を に送り返したいと考えていAppます。しかし、これを行う方法がわかりません。これは内部のクラスで行われAppますか? これを実行して、そのクラスの名前を AndroidManifest に追加しようとしましたが、呼び出そうとすると、このクラスをインスタンス化できないというエラーでアプリケーションがクラッシュしました。

(この質問が以前に投稿されたことは承知していますが、満足のいく回答は見たことがありません。)

私が試した解決策を説明するために、編集してください:

AndroidManifest で、これを追加しました。

    <receiver android:name=".App.SmsHandler" >
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

App クラスに、次を追加しました。

public class SmsHandler extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        // Stuff here
    }
}

public static final String TEXT_INTENT = "textintent";

次のコードを使用して呼び出してみました (SmsReceiverただし、これによりアプリがクラッシュしました)。

private void forwardSms(Message message, Context context) {
    Intent myIntent = new Intent(MsgWallApp.TEXT_INTENT);

    Bundle myData = new Bundle();
    myData.putString("sender", message.getSender());
    myData.putString("text", message.getText());
    context.sendBroadcast(myIntent);
}
4

1 に答える 1

2

アクティビティが破壊されていないときにのみイベントをキャッチしたい場合は、アクティビティ内にブロードキャストレシーバーを配置するだけで十分です。

アクティビティが開始されていない場合でも、すべてのブロードキャストをキャッチしたい場合は、Androidサービスをご覧ください。

あなたの特定のエラーについて、ここに貼り付けてみませんか?また、多分あなたのコード?

于 2012-10-22T12:51:35.113 に答える