onReceive()では、新しいインテントを作成して新しいアクティビティを開始したいと思います。活動が終わった後、私は活動のために出発したのと同じ行に戻っていきたいと思います。私はこれを達成するためにBroadcastReceiverクラスを使用できないことを知っています。これはどのように達成できますか?以下はonReceive()コードです:開始アクティビティが完了するまで待つonReceiveを入れてください
final BroadcastReceiver mPairingRequestRecevier = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (BluetoothDevice.ACTION_PAIRING_REQUEST.equals(intent.getAction()))
{
final BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
if (type == BluetoothDevice.PAIRING_VARIANT_PIN)
{
abortBroadcast();
String passkey="hey";
Intent passkeyIntent = new Intent(context.getApplicationContext(),TestActivity.class);
passkeyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
passkeyIntent.putExtra("passkey",passkey);
context.startActivity(passkeyIntent);
Log.d("after returning...",passkey);
}
else
{
Log.d("Unexpected pairingtype:" , type+"");
}
}
}
};
これを達成するためのアイデアはありがたいです。
を私が活動のために去ったのと同じ行へ」 - それは不可能です。 'startActivity()'は非同期です。 'startActivity()'が戻るまでに、他のアクティビティを開始するための重要なステップはありません。 'onReceive()'が返され、メインアプリケーションスレッドの制御をフレームワークに返すまで、実際の作業は開始されません。あなたの 'TestActivity'は、あなたが受信機を持つことを検討していた作業を何でもする必要があります。 – CommonsWare
同じ行で何を意味しますか? –
@CommonsWareはいそうです。あなたはそれがどのように達成できるか知っていますか?たぶん私は、正しいクラスまたはメソッド名またはいくつかのフラグが不足しています。お勧めしますか? –