安卓之文字,链接,图片,音乐,分享功能的实现
来源:互联网 发布:js首存10元送39元彩金 编辑:程序博客网 时间:2024/04/30 07:20
转发请注明出处:http://blog.csdn.net/qq_28055429/article/details/51442643
搞了好久,还是没搞好,没得到想要的效果,还是总结一下,以供和我一样的新手参考:
ONE: 相关知识
一,Intent的相关属性:
(1)Action: 指Intent将要完成的动作
setAction:设置动作
getAction:获取动作
(2)Data: 指执行动作需要操作的数据,不同的Action有不同的Data
如:在联系人数据库中的一条联系人记录,表现形式为Uri
ACTION_DIAL content://contacts/people/1 :显示电话拨号界面,并填充标识为1的人的信息
ACTION_VIEW tel:10086 :显示电话拨号界面,并填充给定的号码10086
(3)Type: 数据类型,显式指定Intent的数据类型(MIME)
(4)Category: 类别,包含了处理该Intent的组件的种类信息,起着对action的补充说明的作用
如:
CATEGORY_HOME : 表示返回Home界面
CATEGORY_LAUNCHER : 表示Intent的接受者应该在Launcher中作为顶级应用出现
(5)Component : 组件,指定Intent的目标组件的类名称 (指定了这个属性后,Intent的其他属性都是可选的)
Android查找时,若无指定Componet,则在,action,data/type,category,中查找,找到匹配的组件,
若有指定的Componet,则直接使用此指定的Componet组件
(6)Extras: 附近信息,是其他所有附近信息的集合
(7)flag : 该属性用于通知系统如何启动目标Activity , 或者启动之后采取怎样的操作
如:
FLAG_ACTIVITY_NEW_TASK: 通知系统目标Activity作为新的Task进行初始化
二,Intent的两种操作方式:显式与隐式
显式:Intent intent = new Intent(MainActivity.this , SecondActivity.class);
startActivity(intent); 指定了目标(SecondActivity),不需要去解析
隐式:不知道接收者,需要解析
三,Intent解析:
(1)通过查找已注册的AndroidManifest.xml中的所有Intent Filter及其中定义的Intent,最终找到匹配的Intent
若组件没有Intent filters,那么它只能接受显式Intent,
若有,则能同时接受两者
(2)当一个Intent和Intent Filter进行比较时,Android是通过Intent的action, type , category这三个属性进行判断的,具体如下:
Action: IntentFilter中可以有一个或者多个Action用于过滤,而Intent请求中只要有一个匹配其中的action即可;
若IntentFilter没有设置action值,则所有的Intent都会被过滤
Data : IntentFilter也可以设置多个Data , 也可以没有, Data包含的内容主要是URL和数据类型,在对Data进行查找时主要
根据这两点
Category : IntentFilter 也可以设置多个category , 只有当Intent中所有的category 都能匹配到IntentFilter中的category时才能通过 检查
四,注意地方
(1)setType和setData只能有一个生效
(2)如若同时设置setType和setData,可使用用函数setDataAndType
TWO : 开始分享代码
type常用形式:
Text:文本
image/* :支持所有格式图片
text/plain : 纯文本
text/html : HTML文档
text/* : text类型
video/mpeg : MPEG动画
等等,
还有一个(*/*)
代码:
package com.maiyu.simpleonemusic;import java.io.File;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.util.Log;public class Share extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {//可以在此处为三个分享按钮绑定ID并设置监听器,这里不写了super.onCreate(savedInstanceState);}//(1)分享字符串public void shareStr(){//创建分享IntentIntent sharedIntent = new Intent();//设置动作为Intent.ACTION_SEND sharedIntent.setAction(Intent.ACTION_SEND);//设置为文本类型sharedIntent.setType("text/*");sharedIntent.putExtra(Intent.EXTRA_TEXT,"你好聪明" );//设置要分享的内容 startActivity(Intent.createChooser(sharedIntent, "分享到:"));}//分享图片public void shareI(){//File.separator:分割号 String imagePath = Environment.getExternalStorageDirectory() + File.separator + "test.jpg"; //由文件得到uri Uri imageUri = Uri.fromFile(new File(imagePath)); Log.d("share", "uri:" + imageUri); //输出:file:///storage/emulated/0/test.jpg Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, "分享到"));}//分享音乐,这里只是可以分享到qqpublic void shareMusic(){String url = Environment.getExternalStorageDirectory() + File.separator + "test.mp3";Intent share = new Intent(Intent.ACTION_SEND);//创建组件,ComponentName component = new ComponentName("com.tencent.mobileqq","com.tencent.mobileqq.activity.JumpActivity");share.setComponent(component);//设置组件File file = new File(url);//参数为谋音乐在手机中的路径System.out.println("file " + file.exists());share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));share.setType("*/*");startActivity(Intent.createChooser(share, "分享到"));}}
注意:
分享音乐时,只是实现了分享到QQ的平台,
可以用sharesdk来实现别的平台:
具体略,
附注:我也不熟练
- 安卓之文字,链接,图片,音乐,分享功能的实现
- 安卓分享图片文字链接功能
- iOS 友盟微博分享文字+图片+链接实现
- android开发步步为营之103:android分享音频视频图片和文字功能的实现
- Android实现分享图片和文字的功能
- iOS开发实现文字/图片的社交网络分享功能
- 安卓文本分享功能的实现
- 安卓分享功能的实现
- Android Intent分享文件|分享图片|分享文字|功能的实现
- 安卓 图片和文字分享
- Android系统自带分享功能的实现(可同时分享文字和图片)
- Android系统自带分享功能的实现(可同时分享文字和图片)
- Android系统自带分享功能的实现(可同时分享文字和图片)
- Android系统自带分享功能的实现(可同时分享文字和图片)
- java 聊天室之 传送图片文字等功能的实现
- java 聊天室之 传送图片文字等功能的实现
- Andorid 系统自定义的 文字和图片 分享功能
- Android应用实现微信分享(微信好友,朋友圈),分享链接,图片,文字
- Android内存管理知识
- 稀疏信号的生成
- 怎么学嵌入式
- git入门
- UIPickerView 内容循环滚动
- 安卓之文字,链接,图片,音乐,分享功能的实现
- 数字化的本质和基础
- sql server建表时怎么设置ID字段自增
- Android相册,利用LruCache、DiskLruCache实现图片的加载,避免出现OOM
- IOS开发之微信山寨版
- linux常用命令-ip
- brodcastReceiver注册与使用
- js打开对话框并传参
- 查看进程linux命令