Android 接收分享内容补:增加 ContentResolver.SCHEME_FILE 和 ContentResolver.SCHEME_CONTENT解决QQ浏览器分享

针对QQ浏览器分享内容的问题,当类型为'image/*'且带有title时,原方法无法获取图片。通过判断ContentResolver的SCHEME_FILE和SCHEME_CONTENT,可以正确处理不同情况,确保多图分享和不同应用分享的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



       在之前写过一篇Android 分享其他APP的内容之文本和图片:

     点击打开链接,但是会有点小问题,比如说QQ浏览器分享过来的就是“image/*”类型,而不是“text/*”类型,而且QQ浏览器分享的还带着title ,那这个该怎么解决呢?


/** 
     * 获取图片 单张 
     * @param intent 
     */  
    private void handleSendImage(Intent intent) {  
        Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);  
        if (imageUri != null) {  
            getRealPathFromURI(this,imageUri);  
        }  
    }  

  这种情况已经拿不到QQ浏览器的分享过来的图片了,修改如下:

/**
	 * 获取图片
	 * @param intent
	 */
	@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
	private void handleSendImage(Intent intent) {
		Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
		String imagePath = null ;
		final String scheme = imageUri.getScheme();
		String data = null;
		if ( scheme == null )
			data = imageUri.getPath();
		else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
			ClipData clipData = (ClipData) intent.getClipData();
			String sharedText = clipData.getItemAt(0).getText().toString();
			imagePath = imageUri.getPath();
			

		}else if( ContentResolver.SCHEME_CONTENT.equals( scheme ) )
		{
			if (imageUri != null) {
                         getRealPathFromURI(this,imageUri);  

			}
		}


	}

根据SCHEME 区分获取相应的path ,就不会出错了。

同样多图分享,也存在个别应用如ES 会把图片路径传到SCHEME_FILE 里,解决如下:

/**
	 * 多图分享
	 * @param intent
	 */
	private void handleSendMultipleImages(Intent intent) {
		ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
		String imagePath = null ;
		if (imageUris != null) {
			for (Uri image : imageUris) {

				final String scheme = image.getScheme();
				String data = null;
				if ( scheme == null )
					data = image.getPath();
				else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {
					imagePath = image.getPath();
					//String imagePath = clipData.
				}if(ContentResolver.SCHEME_CONTENT.equals(scheme))
				{
					 getRealPathFromURI(this,imageUri);  

				}
				
			}
		}
	}

这样就不会有问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值