2014年7月19日土曜日

androidとLineを連携する

android開発をしていると、最近はLineと連携して欲しいという要望が増えてきました。

実装したので、以下にコードを記載します。

環境

  • android4.0.2(sdk14)以上

私の場合、LineLogicというビジネスクラス用のクラスを用意しました。理由は、色々なacitivtyやfragmentで再利用したいからです。
androidとLineの連携で必要な機能は二つあります。
一つはLineのinstall有無を判断する機能。
もう一つはLineアプリにメッセージを投げるintentを取得する機能です。
以下、ソースコードです。


LineLogic.java

/**
 * SNS選択のLine選択時に利用するビジネスロジック
 */
public class LineLogic {

 protected Context mContext;
 
 public LineLogic(Context context) {
  super(context);
 }
 
 /**
  * Lineがinstall済みかどうかを判断します。
  * install済みの場合はtrue, installしていない場合はfalse
  * @return
  */
 public boolean isInstallLine() {
  // パッケージマネージャを取得
  PackageManager pm = mContext.getPackageManager();
  // ランチャーから起動出来るアプリケーションの一覧を取得
  Intent intent = new Intent(Intent.ACTION_MAIN, null);
  intent.addCategory(Intent.CATEGORY_LAUNCHER);
  // 一覧の取得
  List list = pm.queryIntentActivities(intent, 0);
  if (list != null) {
   for (ResolveInfo info : list) {
    // アプリ名をログに出力
    //Log.i("アプリ名", info.loadLabel(pm).toString());
    // パッケージ名をログに出力
    //Log.i("パッケージ名", info.activityInfo.packageName);
    // パッケージ名に「"jp.naver.line.android"」が存在するか判定
    if(info.activityInfo.packageName.equals("jp.naver.line.android")) {
     return true;
    }
      }
  }
  return false;
 }
 
 /**
  * Lineに送るintentを作成する
  */
 public Intent getIntentSendLine(String msg) {
  Intent intent = new Intent();
  intent.setAction(Intent.ACTION_VIEW);
  intent.setData(Uri.parse("line://msg/text/" + msg));
  return intent;
 }

}

呼び出し側
MainActivity.java

  LineLogic logic = new LineLogic(getApplicationContext());
  // Lineインストール済み
  if(logic.isInstallLine()) {
   startActivity(logic.getIntentSendLine("test"));
  // Line未インストール
  } else {
   // something
  }

isInstallLineメソッドでラインがinstallされているかを判断し、getIntentSendLineメソッドでメッセージを作成したintentを取得します。 このintentを投げることで、Lineにメッセージを投稿することができます。
また、isInstallLineメソッドで判定しないと、Lineアプリが未インストール時にアプリが落ちてしまいます。

参考サイト

この記事がお役にたちましたらシェアをお願いします

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

1 件のコメント:

  1. 困っております(涙)。スマホにNAVER Media Playeyをインストールするだけのスペースがなかったので、アプリケーションを削除したり、SDカードに移したりして使用可能枠を確保できたので、無事インストールできました。ですが、その直後にLINEの名前をアプリケーションで見ると、jp.naver.line.androidに変わり、アイコンも緑色のアンドロイドに変わりました。スタート画面上にあるLINEをタップしても『電話にアプリケーションがインストールされていません。』とメッセージがでて起動しません。ほかのアプリも同様です。PCのLINEは使用できています。厚かましい事承知の上、解決策をご教授願います。宜しくお願いします。

    返信削除

Related Posts Plugin for WordPress, Blogger...