美文网首页开发细节
Android 分享到Line的两种方式

Android 分享到Line的两种方式

作者: 传超_ | 来源:发表于2018-11-21 10:43 被阅读0次

    写这篇文章主要目的是搜索到的答案都不是很完善,所以在此整理一下,防止有这需求的小伙伴们抓瞎 ;实现之前查了官方的文档,没有找到关于sdk支持分享的地方,只是提供了scheme支持(而且很难找..)

    通过官方的scheme分享

    参考链接:https://developers.line.biz/en/reference/messaging-api/#text-message

    分享文本:

    line://msg/text/xxxxx ;“xxxxx”部分即要分享的文本,文本支持Unicode 表情以及line自定的表情,限制2000字符

        public void shareTextToLine(String content){
            String scheme = "line://msg/text/"+content;
            Uri uri = Uri.parse(scheme);
            startActivity(new Intent(Intent.ACTION_VIEW,uri));
        }
    
    

    分享图片:

    **line://msg/image/{localFilePath}; **{localFilePath}部分就是图片文件的文件地址,需要是绝对路径

    Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap,
    
            null, null));
    
    String scheme ="line://msg/image"+getFilePath(uri);
    
    context.startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse(scheme)));
    
    

    利用Android系统Intent分享

    参考链接:https://blog.csdn.net/qq_29967217/article/details/51598011

    这里两个坑,一个是如果只是限定package,会通知唤起 “Line” 以及 “Line Keep” 需要用户二次选择,很讨厌,所以需要通过ComponentName指定activity;指定activity这里还有个坑,Line8.0以下版本处理分享的Activity不是同一个所以需要根据版本号做个判断(个人觉得低版本不适配关系不大 )

    版本判断相关:

            boolean isOlderVersion = false;
             try {
                PackageInfo packageInfo = context.getPackageManager().getPackageInfo(Channel.PACKAGE_LINE, 0);
                if (packageInfo != null) {
                    String[] arrays = packageInfo.versionName.split("\\.");
                    if (arrays.length > 0) {
                        isOlderVersion = Integer.parseInt(arrays[0]) < 8;
                    }
                }
            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace();
            }
            if (isOlderVersion) {
                componentName = new ComponentName(packageName, "jp.naver.line.android.activity.selectchat.SelectChatActivity");
            } else {
                componentName = new ComponentName(packageName, "jp.naver.line.android.activity.selectchat.SelectChatActivityLaunchActivity");
            }
    

    分享示例(这里只放个分享图片的 )

            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.setType("image/*");
            Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, null, null));
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
            shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            shareIntent.setComponent(componentName);
            if (shareIntent.resolveActivity(BaseApplication.getInstance().getPackageManager()) == null) {
                return;
            }
            context.startActivity(shareIntent);
    

    相关文章

      网友评论

        本文标题:Android 分享到Line的两种方式

        本文链接:https://www.haomeiwen.com/subject/dxuqqqtx.html