誰かがこれを行うことができないと言う前に、プロセスが互いに干渉できない理由と、これが可能な条件について十分な調査を行いました。私たちの問題は、デバイス間の Bluetooth サポートが一貫していないことです。一部のデバイスでの解決策は、既存の Bluetooth サービスを停止し、別のアプリ (BlueFTP) を実行して、解放されたポートでリッスンし、OPP 通信を管理できるようにすることです。
android.permission.RESTART_PACKAGES
許可プラスActivityManager.restartPackage()
は、問題のあるパッケージを再起動するだけなので機能しません。Process.killProcess
明らかな理由で機能しません (API を読んでください)android.permission.KILL_BACKGROUND_PROCESSES
Bluetoothアプリはバックグラウンドアプリと見なされないため、強制終了する資格がないため、パーミッションプラスActivityManager.killBackgroundProcesses()
は無視されます(APIによると私は信じています)。
現在、クライアントが特定の電話で問題を抱えている場合、実行中のアプリにアクセスして問題のある OPP サービスを強制停止してから、BlueFTP を更新してポート リスナーが開始するようにします。問題のサービスには、電話と Android のバージョンに応じて複数の名前が考えられます。
そう。プロセスは現在手動ですが、設定の強制停止オプションをミラーリングするコードを介してこれを達成する方法があることを望んでいました. クライアントにアクセス方法を説明するのではなく、そのサービスの設定を開くのを手伝うほうが簡単なオプションかもしれませんが、完全な解決策が利用可能であればそれを希望します. 開発者の電話にはルート アクセス権がありますが、クライアントの電話にはアクセスできないことに注意してください。