AndroidアプリでLineのトーク履歴バックアップのインテントを受け取る


概要

ラインのトーク履歴をテキストファイル(.txt)として別のアプリで受け取る方法

目的

- 容量少なく履歴を保存する
- バックアップとして保存しておく
- ラインのバックアップでバックアップできない状況に保存する(osの変更、複数人のチャットの保存)

ラインでのバックアップの仕方(Android)

トークリスト -> 設定表示 -> トーク設定 -> トーク履歴をバックアップ -> テキストでバックアップ -> 目的のアプリを選ぶ

方法

・Manifest
intent-fileterをインテントを受けるアクティビティ内に入れる。ラインがアクションを"android.intent.action.SEND_MULTIPLE"、mimeTypeを"text/*"で送ってくるので対応する。

AndroidManifest.xml
<intent-filter>
    <action android:name="android.intent.action.SEND_MULTIPLE" />
    <data android:mimeType="text/*" />
</intent-filter>

permissionの設定をする(バージョンがJELLY_BEAN(16)より上の場合の設定もアクティビティで行う)。

AndroidManifest.xml
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

・activity

マイムタイプとアクションが正しいのを確認してuriリストを入手する。リストの最初のアイテムがテキストファイル。Unchecked castの警告が出るので@SuppressWarnings("unchecked")で対応する。

MyActivity.java
if (mimeType.equals("text/plain")){
  if (Intent.ACTION_SEND_MULTIPLE.equals(i.getAction())){
            @SuppressWarnings("unchecked")
            ArrayList<Uri> uriList = (ArrayList<Uri>) i.getSerializableExtra(Intent.EXTRA_STREAM);
            Uri uri = uriList.get(0);
  }
}

・その他
getPathでパスを得て、FileInputStreamなどを使ってトークヒストリーを使いたいように使う。