寫這篇文章主要目的是搜索到的答案都不是很完善,所以在此整理一下融师,防止有這需求的小伙伴們抓瞎 ;實現(xiàn)之前查了官方的文檔誉碴,沒有找到關(guān)于sdk支持分享的地方,只是提供了scheme支持(而且很難找..)
通過官方的scheme分享
參考鏈接:https://developers.line.biz/en/reference/messaging-api/#text-message
分享文本:
line://msg/text/xxxxx 沾鳄;“xxxxx”部分即要分享的文本,文本支持Unicode 表情以及l(fā)ine自定的表情确憨,限制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系統(tǒng)Intent分享
參考鏈接:https://blog.csdn.net/qq_29967217/article/details/51598011
這里兩個坑,一個是如果只是限定package休弃,會通知喚起 “Line” 以及 “Line Keep” 需要用戶二次選擇吞歼,很討厭,所以需要通過ComponentName指定activity塔猾;指定activity這里還有個坑篙骡,Line8.0以下版本處理分享的Activity不是同一個所以需要根據(jù)版本號做個判斷(個人覺得低版本不適配關(guān)系不大 )
版本判斷相關(guān):
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);