【Android Training - 06】分享数据内容 [Lesson 1 - 发送分享的数据到其他App]

本文详细介绍了如何在Android应用中利用Intent实现文本与二进制内容的分享,包括发送文本、图片等多媒体内容的步骤与注意事项。

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

Sending Content to Other Apps[发送需要分享的内容到其他App]

  • 当你构建一个intent,你必须指定这个intent需要触发的actions。Android定义了一些actions,包括ACTION_SEND,这个action表明着这个intent是用来从一个activity发送数据到另外一个activity的,甚至是跨进程之间的。
  • 为了发送数据到另外一个activity,你需要做的是指定数据与数据的类型,系统会识别出能够兼容接受的这些数据的activity并且把这些activity显示给用户进行选择(如果有多个选择),或者是立即启动Activity(只有一个兼容的选择)。同样的,你可以在manifest文件的Activity描述中添加接受哪些数据类型。
  • 在不同的程序之间使用intent来发送与接受数据是在社交分享内容的时候最常用的方法。Intent使得用户用最常用的程序进行快速简单的分享信息。
  • 注意:ActionBar添加功能的最好方法是使用ShareActionProvider,它能够在API level 14以上进行使用。ShareActionProvider会在第三课中进行详细介绍。

Send Text Content [分享文本内容]

  • ACTION_SEND的最直接与最常用的是从一个Activity发送文本内容到另外一个Activity。例如,Android内置的浏览器可以把当前显示页面的URL作为文本内容分享到其他程序。这是非常有用的,通过邮件或者社交网络来分享文章或者网址给好友。下面是一段Sample Code:
  1. Intent sendIntent = new Intent();  
  2. sendIntent.setAction(Intent.ACTION_SEND);  
  3. sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");  
  4. sendIntent.setType("text/plain");  
  5. startActivity(sendIntent);  

  • 如果设备上有安装某个能够匹配ACTION_SEND与MIME类型为text/plain程序,那么Android系统会自动把他们都给筛选出来,并呈现Dialog给用户进行选择。如果你为intent调用了Intent.createChooser(),那么Android总是会显示可供选择。这样有一些好处:
    • 即使用户之前为这个intent设置了默认的action,选择界面还是会被显示。
    • 如果没有匹配的程序,Android会显示系统信息。
    • 你可以指定选择界面的标题。
  • 下面是更新后的代码:
  1. Intent sendIntent = new Intent();  
  2. sendIntent.setAction(Intent.ACTION_SEND);  
  3. sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");  
  4. sendIntent.setType("text/plain");  
  5. startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to));  
  • 效果图如下:

  • Optionally,你可以为intent设置一些标准的附加值,例如:EXTRA_EMAIL, EXTRA_CC, EXTRA_BCC, EXTRA_SUBJECT.然而,如果接收程序没有针对那些做特殊的处理,则不会有对应的反应。你也可以使用自定义的附加值,但是除非接收的程序能够识别出来,不然没有任何效果。典型的做法是,你使用被接受程序定义的附加值。
  • 注意:一些e-mail程序,例如Gmail,对应接收的是EXTRA_EMAIL与EXTRA_CC,他们都是String类型的,可以使用putExtra(string,string[])方法来添加到intent里面。

Send Binary Content [分享二进制内容]

  • 分享二进制的数据需要结合设置特定的MIME Type,需要在EXTRA_STREAM里面放置数据的URI,下面有个分享图片的例子,这个例子也可以修改用来分享任何类型的二进制数据:
  1. Intent shareIntent = new Intent();  
  2. shareIntent.setAction(Intent.ACTION_SEND);  
  3. shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);  
  4. shareIntent.setType("image/jpeg");  
  5. startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));  
  • 请注意下面的内容:
  • 你可以使用"*/*"这样的方式来制定MIME类型,但是这仅仅会match到那些能够处理一般数据类型的Activity【即一般的Activity无法详尽所有的MIME类型】
  • 接收的程序需要有访问URI资源的权限。下面有一些方法来处理这个问题:
    • 把文件写到外部存储设备上,类似SDCard,这样所有的app都可以进行读取。使用Uri.fromFile()方法来创建可以用在分享时传递到intent里面的Uri.。然而,请记住,不是所有的程序都遵循“file://”这样格式的Uri。
    • 在调用 getFileStreamPath()返回一个File之后,使用带有MODE_WORLD_READABLE 模式的openFileOutput() 方法把数据写入到你自己的程序目录下。像上面一样,使用Uri.fromFile()创建一个“file://”格式的Uri用来添加到intent里面进行分享。
    • 媒体文件,例如图片,视频与音频,可以使用scanFile()方法进行扫描并存储到MediaStore里面。onScanCompletted()回调函数会返回一个"content://"格式的Uri.,这样便于你进行分享的时候把这个uri放到intent里面。
    • 图片可以使用 insertImage() 方法直接插入到MediaStore 系统里面。那个方法会返回一个"content://"格式的Uri.
    • 存储数据到你自己的ContentProvider里面,确保其他app可以有访问你的provider的权限。(或者使用 per-URI permissions)

Send Multiple Pieces of Content [发送多块内容]

  • 为了同时分享多种不同类型的内容,需要使用ACTION_SEND_MULTIPLE与指定到那些数据的URIs列表。MIME类型会根据你分享的混合内容而不同。例如,如果你分享3张JPEG的图片,那么MIME类型仍然是“image/jpeg”。如果是不同图片格式的话,应该是用“image/*”来匹配那些可以接收任何图片类型的activity。如果你需要分享多种不同类型的数据,可以使用“*/*”来表示MIME。像前面描述的那样,这取决于那些接收的程序解析并处理你的数据。下面是一个例子:
  1. ArrayList<Uri> imageUris = new ArrayList<Uri>();  
  2. imageUris.add(imageUri1); // Add your image URIs here  
  3. imageUris.add(imageUri2);  
  4.   
  5. Intent shareIntent = new Intent();  
  6. shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);  
  7. shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);  
  8. shareIntent.setType("image/*");  
  9. startActivity(Intent.createChooser(shareIntent, "Share images to.."));  
  • 当然,请确保指定到数据的URIs能够被接收程序所访问(添加访问权限)。

学习自:http://developer.android.com/training/sharing/send.html,转载请注明出处,谢谢!
转载请注明出处:http://blog.youkuaiyun.com/kesenhoo,谢谢!

标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值