[英]How to Share Image+Text using Share Intent in android
我使用此代碼,但它無法正常工作。
String Body = "Deals Name: " + Bussinessname + "\n"
+ "Deals: " + deal + "\n" + "Address: " + city
+ " ," + country;
Intent share = new Intent(android.content.Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse(Images.Media.EXTERNAL_CONTENT_URI + "/" + image);
share.setType("image/*");
share.putExtra(Intent.EXTRA_SUBJECT, "The EssexPass");
share.putExtra(Intent.EXTRA_TEXT, Body);
share.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(share, "Share Deal"));
當我使用類型文本時,它可以正常工作。
但我想分享一段文字和一張圖片。
共享意圖在 FaceBook 中不起作用。
試試下面的代碼:
String fileName = "image-3116.jpg";//Name of an image
String externalStorageDirectory = Environment.getExternalStorageDirectory().toString();
String myDir = externalStorageDirectory + "/saved_images/"; // the file will be in saved_images
Uri uri = Uri.parse("file:///" + myDir + fileName);
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/html");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Test Mail");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Launcher");
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(shareIntent, "Share Deal"));
使用意圖過濾器,我們無法在Facebook上共享文本+圖像。 如果要共享圖像和文本,則必須創建圖像+文本的位圖。
在這里下載源代碼( 在android上使用intent共享圖像和文本 )
MainActivity.java
package com.shareimage;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText et_text;
ImageView iv_image;
TextView tv_share,tv_text;
RelativeLayout rl_main;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init(){
et_text = (EditText)findViewById(R.id.et_text);
iv_image = (ImageView)findViewById(R.id.iv_image);
tv_share = (TextView)findViewById(R.id.tv_share);
rl_main = (RelativeLayout)findViewById(R.id.rl_main);
tv_text= (TextView) findViewById(R.id.tv_text);
File dir = new File("/sdcard/Testing/");
try {
if (dir.mkdir()) {
System.out.println("Directory created");
} else {
System.out.println("Directory is not created");
}
} catch (Exception e) {
e.printStackTrace();
}
tv_share.setOnClickListener(this);
et_text.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
tv_text.setText(et_text.getText().toString());
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.tv_share:
Bitmap bitmap1 = loadBitmapFromView(rl_main, rl_main.getWidth(), rl_main.getHeight());
saveBitmap(bitmap1);
String str_screenshot = "/sdcard/Testing/"+"testing" + ".jpg";
fn_share(str_screenshot);
break;
}
}
public void saveBitmap(Bitmap bitmap) {
File imagePath = new File("/sdcard/Testing/"+"testing" + ".jpg");
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
Log.e("ImageSave", "Saveimage");
} catch (FileNotFoundException e) {
Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
}
public static Bitmap loadBitmapFromView(View v, int width, int height) {
Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.draw(c);
return b;
}
public void fn_share(String path) {
File file = new File("/mnt/" + path);
Bitmap bmp = BitmapFactory.decodeFile(file.getAbsolutePath());
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Share Image"));
}
}
您可以在Android Dev上閱讀共享二進制內容,
示例代碼
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));
你需要額外加入意圖:
intent.putExtra("extra_name_1", ”some value”);
intent.putExtra("extra_name_2", 123);
intent.putExtra("extra_name_3”, false);
您好首先,您需要在構建gradle中添加compile com.facebook.android:facebook-android-sdk:4.0.0
com.facebook.android:facebook-android-sdk:4.0.0,然后按照此鏈接。 https://developers.facebook.com/docs/facebook-login/v2.3
如果你想分享來自 url 的圖像和文本使用意圖使用你的分享方法中的以下塊
對於Java :
AsyncTask.execute(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("Your url here");
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream inputStream = null;
inputStream = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(inputStream);
Bitmap b = myBitmap;
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("Image/jpeg");
share.setType("text/html");
share.putExtra(Intent.EXTRA_TEXT, "shre body");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(MainActivity.getContentResolver(), b, "Title", null);
Uri imageUri = Uri.parse(path);
share.putExtra(Intent.EXTRA_STREAM, imageUri);
MainActivity.startActivity(Intent.createChooser(share, "Select"));
}
catch (Exception e){
e.printStackTrace();
}
}
});
在kotlin中:
AsyncTask.execute {
try {
val url = URL("Your url here")
var connection: HttpURLConnection? = null
connection = url.openConnection() as HttpURLConnection?
connection!!.connect()
var inputStream: InputStream? = null
inputStream = connection.inputStream
val myBitmap = BitmapFactory.decodeStream(inputStream)
val share = Intent(Intent.ACTION_SEND)
share.type = "Image/jpeg"
share.type = "text/html"
share.putExtra(Intent.EXTRA_TEXT, "Text message here")
val bytes = ByteArrayOutputStream()
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes)
val path = MediaStore.Images.Media.insertImage(
activity?.getContentResolver(),
myBitmap,
"Title",
null
)
val imageUri = Uri.parse(path)
share.putExtra(Intent.EXTRA_STREAM, imageUri)
activity?.startActivity(Intent.createChooser(share, "Select"))
} catch (e: Exception) {
}
}
在我當時遇到同樣問題的旅程中,我使用了這個,謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.