为了避免让您感到头疼,以下是将此功能添加到您应用中的方法。
答案 0 :(得分:-2)
我遇到了这个问题的问题,找到解决方案花了我几个小时但是后续工作应该有效。 (您需要开源 Picasso 库)
您的活动中的代码
Picasso.with(context)
.load("http://...")
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
try {
File myDir = new File(getCacheDir() + "/pictureToShare.jpg");
FileOutputStream out = new FileOutputStream(myDir);
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, out);
out.flush();
out.close();
} catch(Exception e){
// some action
}
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
}
);
File requestFile = new File(getCacheDir() + "/pictureToShare.jpg");
Uri imageUri = FileProvider.getUriForFile(YourActivity.this,
getPackageName() + ".share", requestFile );
Intent share = new Intent(Intent.ACTION_SEND);
share.setPackage("com.whatsapp");
share.setType("image/jpg");
share.putExtra(Intent.EXTRA_TEXT,"Your text"); //to share text
share.putExtra(Intent.EXTRA_STREAM, imageUri); //to share image
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
try {
startActivity(share);
} catch (android.content.ActivityNotFoundException ex) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.whatsapp")));
}
在AndroidManifest.xml中插入此代码
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.share"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
创建一个名为&#34; xml&#34;的文件夹在你的&#34; res&#34;在文件夹中有一个名为&#34; provider_paths&#34;的xml-resource-file; 在provider_paths.xml中写下以下行
<paths>
<cache-path name="name" path="." />
</paths>