需求:应用压缩好的日志需通过QQ或微信等三方应用分享出去
实现:
public enum AppType{
QQ{
@Override
public String toString() {
return "com.tencent.mobileqq";
}
},
WEIXIN{
@Override
public String toString() {
return "com.tencent.mm";
}
},
ALL{
@Override
public String toString() {
return "";
}
}
}
/**
* 将本地文件发送给其它的App
* @param context 上下文
* @param file 文件
* @param type 类型 QQ表示QQ,WEIXIN表示微信 ,ALL表示所有
* @return false表示失败 true表示成功
*/
public static boolean sendFileToOtherApp(Activity context, File file, AppType type)
{
final Uri uri;
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= 24) {//若SDK大于等于24 获取uri采用共享文件模式
uri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileProvider", file);
} else {
uri = Uri.fromFile(file);
}
Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, uri);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
share.setType(mimetype);//此处可发送多种文件
share.addCategory(Intent.CATEGORY_DEFAULT);
if(!TextUtils.isEmpty(type.toString()))
share.setPackage(type.toString());
if (share.resolveActivity(context.getPackageManager()) != null)
{
Intent intent = Intent.createChooser(share, "分享");
//处理分享文件后停在QQ界面,退到后台多任务开启为QQ非当前app
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//处理选择打开方式后不再弹选择框
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
return true;
} else {
return false;
}
}