0

私はこのシェルスクリプトのスニペットを持っています:

am start -n com.android.gallery3d/com.android.gallery3d.app.MovieActivity -d /sdcard/movie.mp4
sleep 5
input keyevent 4

このスクリプトは基本的に次のようになります。1。ギャラリーアプリケーションを開いてmovie.mp4を開始します。2。5秒間スリープします。3。戻るキーを押します。

このスクリプトをadbシェルで実行すると、期待どおりに動作します。つまり、ビデオは最初の5秒間だけ再生され、次に戻るキーが押されてギャラリーアプリが終了します。

ただし、runtime.exec()を使用してこれを実行すると、ギャラリーは起動しますが、それ以外は何も起こりません。アプリケーションがバックグラウンドにあるときに、システムがスクリプトの実行を妨げているようです。誰かがたまたま回避策を知っていますか?または、INTENTを使用して同じ結果を達成する方法はありますか?

前もって感謝します

4

1 に答える 1

1

アプリケーションによって実行されるスクリプトは、アプリケーションのユーザーIDとして実行されます。このユーザーIDには、adbシェル(シェルまたはルートとして実行)が行う追加のデバッグ権限はありません。

セキュリティ上の理由から、アプリケーションは偽のキーストロークを他のアプリケーションに、特にシステム自体にフィードできないようになっています。

おそらく、ギャラリーからバックアウトする代わりに、インテントで何か他のことを始めようとする必要があります。

于 2012-06-19T01:53:24.990 に答える