どんな問題がありますか?私の推測では、アプリにBLUETOOTHとBLUETOOTH_ADMINの両方のアクセス許可を追加する必要があります。
推奨される解決策は、ユーザーがBluetoothを有効にしたい場合にプロンプトを表示するインテントを使用することです。
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableIntent);
また、への呼び出しは非同期であることに注意してくださいenable
。すぐに戻り、バックグラウンドでBluetoothが有効になります。したがって、Bluetoothは実際にはまだ有効になっていない可能性があり、まだ準備が整っている可能性があります。Bluetoothに関するAndroidガイドラインも参照してください
編集追加無効化/待機/有効化/待機サンプルコード
これは、Bluetoothをオフにするように要求し、オンになるのを待つためのサンプルコードです。UIスレッドではなく、別のスレッドで実行する必要があります。正常に完了すると、(できれば)フラグをtrueに設定するクラスにこれをカプセル化することができます。Runnable
volatile
注: このサンプルコードには、ユーザーアプリケーションからのダイアブル/有効化を許可しない一部の古いデバイスで問題が発生することがわかっています。
BluetoothAdapter.getDefaultAdapter().disable();
while (BluetoothAdapter.getDefaultAdapter().isEnabled())
{
try
{
Thread.sleep(100L);
}
catch (InterruptedException ie)
{
// unexpected interruption while disabling Bluetooth
Thread.currentThread().interrupt(); // restore interrupted flag
return;
}
}
// disabled, re-enabling Bluetooth
BluetoothAdapter.getDefaultAdapter().enable();
while (!BluetoothAdapter.getDefaultAdapter().isEnabled())
{
try
{
Thread.sleep(100L);
}
catch (InterruptedException ie)
{
// unexpected interruption while enabling bluetooth
Thread.currentThread().interrupt(); // restore interrupted flag
return;
}
}