[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”});
のようにすればできます







アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

TECH ACADEMY
オンライン説明会


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


シェアする

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

フォローする