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