[Android] Logcatを端末に保存するためProcessBuilderを使う

USB 接続で Android の操作は adb command を使いますが、Android アプリ自身からコマンドを送ることができます。
Runtime.getRuntime().exec あるいは ProcessBuilder を使います.
 
下はProcessBuilderを使ってアプリパッケージのリストを表示させた例です。
 
1x1.trans - [Android] Logcatを端末に保存するためProcessBuilderを使う


 
Android Studio
2021.2.1




ProcessBuilder の設定

 
以前は様々なコマンドが使えたのですが、セキュリティが厳しくなり使えるものは少なくなりました。それでも使えるものとしてLogcatの取得とパッケージ検索などが可能です

 
Logcatの取得:
エラーが発生したときなどadb shell から


のコマンドでLogcatが取得できます

パッケージ検索:
また、アプリケーション・パッケージを探すコマンドは


PCから接続している場合は、ターミナルで adb shell からシェルに入り、pm list packages を打ち込むとリストが見られます

 
ProcessBuilderに処理させるには以下のようにします
アプリ内なので adb shell はいりません


 

Logcatの取得・保存

 
リアルタイムで監視しながら1秒おきにLogcatを取得して
アプリ専用のストレージ領域に保存します

MainActivity.java


開始させるためのButtonを置いただけです
activity_main.xml


リソース
strings.xml


アプリを実行した後で、Teminalからアプリのストレージ領域を確認してみましょう

adb shell でアプリのパッケージ名で入りますが
セキュリティのためrun-asを使います
 

Androidアプリでデータを内部メモリに保存することはよくありますが、このデータを確認しようとするとパーミッションでブロックされます。こん...

 


Logcatが保存されていました

 

package検索

 
端末にあるアプリのpackage名を検索します

MainActivity.java


 
レイアウトです
activity_main.xml


 
1x1.trans - [Android] Logcatを端末に保存するためProcessBuilderを使う

また、Runtime.getRuntime().exec を使って
Runtime.getRuntime().exec(new String[] {“pm”,”list”,”com.example.testapp”});
のようにすればできます

シェアする

  • このエントリーをはてなブックマークに追加

フォローする