MacでAndroidの通話履歴を抽出して保存する方法

※本ページにはプロモーション(広告)が含まれています。
MacでAndroidの通話履歴を抽出して保存する方法

スマホの通話履歴を急いでバックアップしたいけれど、Macでどうやって安全に取り出せばいいか不安な気持ちになっていませんか。

この記事を読むと、USBでMacとAndroidをつなぎADBを使って通話履歴を抽出し、ローカルに安全に保存するまでを初心者向けにやさしく案内します。

項目内容
独自コンテンツ1MacでのUSB設定からADBコマンド実行までの具体的コマンド例を掲載しています。
独自コンテンツ2よくあるつまずきポイントの実例と、簡単に直せる回避策をまとめています。
独自コンテンツ3抽出した通話履歴をCSVやJSONに整形して保存する実践的な方法を紹介します。

手順は短く区切って分かりやすく説明するので、実際に手を動かしながらサクサク進められます。安心して読み進めてください。

Android博士

焦らず大丈夫です。コマンドの意味も順に説明するので、一歩ずつ確実に作業できますよ。手元で失敗しても戻せるコツも伝えるので、気軽に試してくださいね。

目次

MacでUSB接続してADBで通話履歴を抽出して保存する方法

MacでUSB接続してADBで通話履歴を抽出して保存する方法

MacからUSBでAndroidをつないでADB経由で通話履歴を取り出す手順をやさしく説明します。権限や端末状態により取れる方法が変わるので、具体的なコマンドと注意点を実体験に基づいて整理しました。

大きく分けて2つの選択肢があります。1つはadbのcontentコマンドで端末から直接テキスト出力してMacで整形する方法。もう1つはroot権限が使える端末で通話DBを取り出してMac上でsqlite3でCSV化する方法です。

端末にrootがない場合でもcontentコマンドで多くの情報が取れます。作業を始める前にUSBデバッグを有効にしておくとスムーズです。

  1. adbのcontentコマンドで直接出力してMacでCSVに変換する方法。手軽でroot不要です。
  2. rootで端末内の通話DBを取り出しMacでsqlite3から正式なCSVを作る方法。構造を保ちやすいです。
Android博士

まずは慌てずに接続確認から始めましょう。USBデバッグの許可を求めるダイアログは必ず端末で承認してくださいね。最初の一歩が一番大事です。

ADBのcontentコマンドで通話履歴をCSVに保存する手順

ADBのcontentコマンドで通話履歴をCSVに保存する手順

adbのcontentコマンドは権限が限定された環境でも通話履歴にアクセスできることが多いです。出力はキーと値の列挙形式なので、そのままではCSVではありませんが、Mac上のawkやsedで簡単に整形できます。

adb devices
adb shell content query --uri content://call_log/calls --projection number,date,type,duration > /sdcard/calls_raw.txt
adb pull /sdcard/calls_raw.txt ./calls_raw.txt
awk -F" , " '{gsub(/Row: /,"",$0); split($0,a,", "); for(i in a){split(a[i],b,"="); printf "%s%s", (i==1?"":"\,"), b[2]} print ""}' calls_raw.txt > calls.csv

Macのターミナルでadb devicesで接続確認してadb shell content queryで出力をファイルに保存する

手順
接続確認

Macのターミナルでadb devicesを実行して端末が一覧に出ることを確認します。出ない場合はUSBデバッグやケーブルを見直してください。

手順
contentコマンドで出力

adb shell content query –uri content://call_log/calls –projection number,date,type,durationと実行して出力を端末上かMacに保存します。保存先を明示すると後で便利です。

root端末向けに通話DBをpullしてMacでSQLiteからCSV化する手順

root端末向けに通話DBをpullしてMacでSQLiteからCSV化する手順

root権限がある端末では通話DBをそのまま取り出して正確なテーブル構造で扱えます。コピーと取り出しはsuで権限を昇格して行い、取り出したDBはMacでsqlite3を使ってCSV化します。

adb shell "su -c 'cp /data/data/com.android.providers.contacts/databases/calls.db /sdcard/calls.db && chmod 644 /sdcard/calls.db'"
adb pull /sdcard/calls.db ./calls.db
sqlite3 ./calls.db ".headers on" ".mode csv" ".output calls.csv" "SELECT number,date,type,duration FROM calls;"

adb shellで通話DBを端末内にコピーしadb pullでMacに取り出してsqlite3でcallsテーブルをCSV出力する

手順
DBを端末内にコピー

adb shellでsu権限を取りcpで通話DBを/sdcardにコピーしchmodで読み出せるようにします。

手順
adb pullでMacへ取得

adb pull /sdcard/calls.db ./calls.dbでMacに取り出します。ファイル名と保存場所は明示してください。

手順
sqlite3でCSV出力

Macのsqlite3で.headers on/.mode csv/.outputで出力先を指定しSELECTでcallsテーブルをCSV化します。

MacでWiFi経由や端末上のTermuxでAndroid通話履歴を取得して保存する方法

MacでWiFi経由や端末上のTermuxでAndroid通話履歴を取得して保存する方法

MacからAndroidの通話履歴を抜き出すなら、大きく分けて2つのやり方があると覚えておくと便利です。一つはMacからWiFi経由でADB接続してcontentコマンドで取り出す方法。もう一つはAndroid端末上でTermuxを使ってCSVにしてからMacに転送する方法です。

どちらも狙いは同じで、通話ログを人が読めるファイルにしてMacに保存することです。状況に応じて、ケーブルが無いときや端末に直接触れられないときはWiFi経由を、端末単体で完結させたいときはTermuxを選ぶと使いやすいです。

ADB over Wi-Fiでcontentコマンドを実行して通話履歴を保存する手順

ADB over Wi-Fiでcontentコマンドを実行して通話履歴を保存する手順

まずはWiFi経由でADB接続して通話履歴をMac側に保存する流れです。端末でデベロッパー設定を有効にしてADBをTCPIPモードにしておき、端末のIPを確認してMacから接続します。接続後にcontentコマンドで通話ログを取得し、Macで受け取ってファイルに保存します。

adb tcpip 5555
adb connect 192.168.1.10:5555
adb shell content query --uri content://call_log/calls > calls.txt

Androidをadb connectでネットワーク接続してadb shell content queryの出力をMacに保存する

手順
端末のIPを確認する

端末設定のWiFi詳細などでIPアドレスを確認します。端末とMacは同じネットワークにしておきます。

手順
Macからadb connectで接続する

Macでadb connect IP:5555を実行して接続します。接続が成功したら次へ進みます。

手順
contentコマンドで出力をMacに保存する

adb shell content query –uri content://call_log/calls > ~/Desktop/calls.txtのように実行するとMacにファイルとして保存できます。

Termux上で通話履歴をファイル化してscpでMacに転送する手順

Termux上で通話履歴をファイル化してscpでMacに転送する手順

端末にTermuxを入れて作業する場合は、端末上で通話データをファイル化してからscpでMacに送るとシンプルです。Termuxは端末内で完結するので、USBやネットワークの制約があるときに助かります。

content query --uri content://call_log/calls > ~/calls_raw.txt
sqlite3 -header -csv /data/data/com.android.providers.contacts/databases/contacts2.db "select number,date,type,duration from calls;" > ~/calls.csv
scp ~/calls.csv username@mac.local:/Users/username/Desktop/

Termuxでcontentコマンドやsqlite3でCSVを作成しscpでMacの指定フォルダに送る

手順
CSVを作る

Termux上でsqlite3やcontentを使って通話ログをCSV化します。権限の制約がある場合はrun-asやrootが必要になることがあります。

手順
Macに送る

scp username@端末IP:~/calls.csv /Users/username/受け取りフォルダのように指定して送ります。Mac側でSSHを受け付ける設定が必要です。

Macで通話履歴を見やすく集計して保存する方法

Macで通話履歴を見やすく集計して保存する方法

Macに通話履歴を取り込んで見やすく保存するのは意外と簡単です。ADBで抽出したCSVをMacに転送してNumbersやExcelで整形すれば日付順や発着信別に一覧化がすぐできます。

日付列の書式を揃え着信方向にラベルを付けるとピボットやフィルタで必要な集計がぱっと出ます。列幅や色分けも少し手を入れるだけで読みやすさがぐっと上がります。

重要な履歴は暗号化して定期的に保存しておくと安心です。hdiutilで暗号化ディスクイメージを作り自動化スクリプトで保存する運用が扱いやすくて現場向きです。

Android博士

初めは手順が多く見えるかもしれませんが慌てず一つずつやれば大丈夫です。実際に動かしてみるとすぐコツがつかめますので安心してください。

CSVをNumbersやExcelで読みやすく整形する方法

CSVをNumbersやExcelで読みやすく整形する方法

CSVを開くと文字化けや列ズレが起きやすいので最初に文字コードと区切りを確認してください。UTF-8でカンマ区切りならNumbersやExcelでほぼ問題なく開けます。

日付列はテキストで読み込まれることがあるので日付形式に変換してください。発信と着信を新しい列でラベル化しておくとピボット集計やフィルタがぐっと楽になります。

Excelで開く場合は読み込みダイアログでエンコーディングを明示すると文字化けを防げます。

MacのNumbersでCSVを読み込み日付列を変換し発着信をラベル化してピボットで集計する

手順
CSVをNumbersに読み込む

ファイルをドラッグするかメニューから開いて読み込みます。読み込む際に区切り文字と文字コードを確認してください。

手順
日付列を日付形式に変換

日付列を選んで表示形式を適切な書式に変更します。UNIXタイムなら計算列で変換して扱いやすくします。

手順
発着信をラベル化してピボット作成

発信か着信かを示す新しい列を作ってラベルを入れます。ピボットテーブルで日付や相手ごとに集計すれば傾向が見やすくなります。

通話履歴を暗号化して定期的にMacに保存する方法

通話履歴を暗号化して定期的にMacに保存する方法

通話履歴は個人情報にあたることが多いので暗号化して保管するのが安心です。Mac標準のツールを使えば特別なソフトがなくても安全に暗号化できます。

定期保存はlaunchdやカレンダー連携でスクリプトを走らせると手間が減ります。暗号化イメージに書き込んでアンマウントするだけの流れにすると運用が楽になります。

パスフレーズを失うとデータが復元できなくなるので安全に管理してください。

hdiutilで暗号化ディスクイメージを作成し通話履歴CSVを格納して定期保存の運用にする

手順
暗号化ディスクイメージを作る

hdiutilでAES256暗号などを指定してイメージを作成します。強いパスフレーズを設定して保護してください。

手順
イメージをマウントしてCSVを格納する

作成したイメージをマウントして通話履歴CSVをコピーします。書き込み後は必ず同期してからアンマウントしてください。

手順
定期保存を自動化する

マウント→コピー→アンマウントのスクリプトを用意してlaunchdで定期実行します。ログを残すとトラブル時に復旧が楽になります。

よくある質問

よくある質問
USBデバッグが出てこないときはどうすればいいですか

設定の端末情報でビルド番号を7回タップして開発者向けオプションを有効にしてください。その後USBデバッグを有効にして端末側の許可ダイアログを承認してください。ケーブルが充電専用だと接続できないことがよくあるのでデータ転送対応ケーブルに替えて試してください。

Macでadbコマンドが使えません

AndroidPlatformToolsを公式からダウンロードするかHomebrewでインストールしてください。インストール後はターミナルを再起動してadbが実行できるか確認してください。パス周りでつまずく場合はインストール先をフルパスで指定して動作確認すると分かりやすいです。

権限エラーでファイルを引き出せないと出ます

通話履歴はアプリの内部DBやコンテントプロバイダにあるためルート権限がないと直接のファイル取得は難しいです。root化できない端末ではコンテントプロバイダ経由の読み出しや公式のバックアップ機能を使うと安全に取り出せることがあります。

通話履歴はどこに保存されていますか

端末上では通話情報はCallLogコンテントプロバイダとして管理されていて一般ユーザーがそのまま見るファイルはありません。内部的には連絡先プロバイダのデータベースに格納されていますが直接アクセスするにはrootが必要になります。

抽出した通話履歴を見やすく保存するにはどうするのが良いですか

抽出結果をCSVに変換して日付はUNIXタイムスタンプから人間が読める形式に変換すると扱いやすくなります。エクセルやスプレッドシートで開ける形式にしておくとフィルタや検索が楽になります。

Android11以降で制限が厳しいと聞きましたが対応策はありますか

新しいAndroidではアプリ間の直接アクセスが制限されているためadb経由でも取り出せないケースがあります。端末のバックアップ機能やGoogleアカウントの連携、メーカー提供のバックアップツールを利用すると回避できる場合があります。

どうしても解決しないときはどうすればいいですか

端末の製造元サポートやキャリアに相談するのが安全で確実な手段です。個人情報が含まれるためサードパーティ製ツールを使う場合は信頼性を確認してから実行してください。

まとめ

まとめ

ここまででMacを使ってUSB経由でADBを使い、Androidの通話履歴を抽出して保存する手順をやさしく案内しました。初めてでも落ち着いて進めれば問題なく完了できます。

実際の流れは、開発者向けオプションでUSBデバッグを有効にし、Macと端末をUSB接続して認証したうえで、adbで通話ログのデータベースファイルを引き出すだけです。(ファイル名はcall_log.dbやcontacts2.dbなど端末によって異なります)。抽出したファイルはSQLiteビューアや簡単なスクリプトでCSVやJSONに変換して保存すると扱いやすくなります。

注意点としては、Androidのバージョンや権限によって追加の手順が必要になる場合がある点です。rootやrun-asが必要な場合や暗号化されている場合は無理をせず、まずバックアップを取ってから作業してください。困ったらadbの接続状態やログを確認すると原因が見つかりやすいです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次