Android 分享文本和图片

Android中分享内容的方式很多,有时需要同时分享文字内容和图片,下面是图文分享的关键代码:

/**
	 * 图文分享
	 * 
	 * @param imgPath
	 *            :图片路径,如:/mnt/sdcard/NiMei/image/imageName.jpg
	 * @param content
	 *            :文本内容
	 * @param context
	 */
	public static void share(String imgPath, String content, Context context) {
		File f = new File(imgPath);
		Uri uri = Uri.fromFile(f);
		Intent shareIntent = new Intent(Intent.ACTION_SEND);
		if (uri != null&&imgPath!=null&&imgPath!="") {
			shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
			shareIntent.setType("image/jpeg");
			// 当用户选择短信时使用sms_body取得文字
			shareIntent.putExtra("sms_body", content);
		} else {
			shareIntent.setType("text/plain");
		}
		shareIntent.putExtra(Intent.EXTRA_TEXT, content);
		// 自定义选择框的标题
		// context.startActivity(Intent.createChooser(shareIntent, "选择分享方式"));
		// 系统默认标题
		context.startActivity(shareIntent);
	}
如果想在分享的图片上添加水印,则使用下面的代码实现:
/**
	 * 添加水印后再分享图片
	 */
	public static void share(String filepath, String content, Context context) {
		Intent shareIntent = new Intent(Intent.ACTION_SEND);
		if (filepath != null && filepath != "") {
			// 水印图片
			Bitmap bmpLogo = BitmapFactory.decodeResource(
					context.getResources(), R.drawable.bmp_logo);
			// 源图片
			Bitmap mBitmap = BitmapFactory.decodeFile(filepath);
			// 与水印图片合成
			Bitmap drawingBitmap = Bitmap.createBitmap(mBitmap.getWidth(),
					mBitmap.getHeight(), bmpLogo.getConfig());
			Canvas canvas = new Canvas(drawingBitmap);
			Paint paint = new Paint();
			// 设置水印图片在源图片上显示的位置
			canvas.drawBitmap(bmpLogo, mBitmap.getWidth() - bmpLogo.getWidth()
					- 20, mBitmap.getHeight() - bmpLogo.getHeight() - 20, paint);
			paint.setXfermode(new PorterDuffXfermode(
					android.graphics.PorterDuff.Mode.DST_OVER));
			canvas.drawBitmap(mBitmap, 0, 0, paint);
			// 将合成好的图片保存到SD卡再取出分享
			String imgpath = Environment.getExternalStorageDirectory()
					.getAbsolutePath() + "/" + "mfnote.jpg";
			File document = new File(imgpath);
			try {
				FileOutputStream fos = new FileOutputStream(document);
				drawingBitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);// 把数据写入文件
			} catch (Exception e) {
				e.printStackTrace();
			}
			File f = new File(imgpath);
			Uri uri = Uri.fromFile(f);
			if (uri != null) {
				shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
				shareIntent.setType("image/jpeg");
				// 当用户选择短信时使用sms_body取得文字
				shareIntent.putExtra("sms_body", content);
			}
		} else {
			shareIntent.setType("text/plain");
		}
		shareIntent.putExtra(Intent.EXTRA_TEXT, content);
		// 自定义选择框的标题
		// context.startActivity(Intent.createChooser(shareIntent, "邀请好友"));
		// 系统默认标题
		context.startActivity(shareIntent);
	}

有时候需要调用短信分享:

/**
	 * 以短信形式分享
	 */
	public static void sendSMS(Context context,String phoneNumber, String message){
		Uri uri = Uri.parse("smsto:" + phoneNumber);
		Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);
		sendIntent.putExtra("sms_body", message);
		context.startActivity(sendIntent);
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 上,你可以使用 Intent 过滤器来接收系统分享的文件。下面是一个示例代码,展示如何接收并处理系统分享的文件: ```java public class ShareActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_share); // 获取分享的 Intent Intent intent = getIntent(); String action = intent.getAction(); String type = intent.getType(); if (Intent.ACTION_SEND.equals(action) && type != null) { if (type.startsWith("image/")) { // 处理分享图片 handleSharedImage(intent); } else if (type.startsWith("text/")) { // 处理分享文本 handleSharedText(intent); } } } private void handleSharedImage(Intent intent) { Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); if (imageUri != null) { // 在这里处理分享图片 } } private void handleSharedText(Intent intent) { String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); if (sharedText != null) { // 在这里处理分享文本 } } } ``` 在 AndroidManifest.xml 文件中,将该 ShareActivity 添加为一个接收分享的 Intent 过滤器: ```xml <activity android:name=".ShareActivity"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> <data android:mimeType="text/*" /> </intent-filter> </activity> ``` 这样,当用户分享图片文本时,系统会启动 ShareActivity 并传递相关的数据给它,你可以在 `handleSharedImage()` 和 `handleSharedText()` 方法中对分享的文件进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值