文档章节

Android Intent.createChooser() 妙用

墨梅
 墨梅
发布于 2014/03/26 21:04
字数 607
阅读 54
收藏 0

Intent.createChooser(ntent target, CharSequence title)

  其实 大家对该功能第一影响就是ApiDemo 里面的 其只有区区几行代码 提取为:

  Java代码

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

  intent.setType("audio/*");

  startActivity(Intent.createChooser(intent, "Select music"));

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

  intent.setType("audio/*");

  startActivity(Intent.createChooser(intent, "Select music"));

  执行之 会弹出一个对话框 效果为:

  其实 对于这段代码 大家应该都能猜出什么意思 现自己模拟并理解之

  [代码]

  1. 定义TestActivity 用于根据传入Uri 播放目标

  Java代码

  public class TestActivity extends Activity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  this.setTitle("TestActivity");

  Intent i = this.getIntent();

  Uri u = i.getData();

  try {

  playMusic(u);

  } catch (IllegalArgumentException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (SecurityException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IllegalStateException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  public void playMusic(Uri uri) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException{

  MediaPlayer mp = new MediaPlayer();

  mp.setDataSource(this, uri); 

  Intent.createChooser(ntent target, CharSequence title)

  其实 大家对该功能第一影响就是ApiDemo 里面的 其只有区区几行代码 提取为:

  Java代码

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

  intent.setType("audio/*");

  startActivity(Intent.createChooser(intent, "Select music"));

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

  intent.setType("audio/*");

  startActivity(Intent.createChooser(intent, "Select music"));

  执行之 会弹出一个对话框 效果为:

  其实 对于这段代码 大家应该都能猜出什么意思 现自己模拟并理解之

  [代码]

  1. 定义TestActivity 用于根据传入Uri 播放目标

  Java代码

  public class TestActivity extends Activity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  this.setTitle("TestActivity");

  Intent i = this.getIntent();

  Uri u = i.getData();

  try {

  playMusic(u);

  } catch (IllegalArgumentException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (SecurityException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IllegalStateException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  public void playMusic(Uri uri) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException{

  MediaPlayer mp = new MediaPlayer();

  mp.setDataSource(this, uri);

    mp.prepare();

  mp.start();

  }

  }

  public class TestActivity extends Activity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  this.setTitle("TestActivity");

  Intent i = this.getIntent();

  Uri u = i.getData();

  try {

  playMusic(u);

  } catch (IllegalArgumentException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (SecurityException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IllegalStateException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  }

  public void playMusic(Uri uri) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException{

  MediaPlayer mp = new MediaPlayer();

  mp.setDataSource(this, uri);

  mp.prepare();

  mp.start();

  }

  }

  2. 在AndroidManifest 注册TestActivity

  Java代码

  < activity android:name=".TestActivity"

  android:label="TestActivity">

  < intent-filter>

  < action android:name="android.intent.action.GET_CONTENT" />

  < category android:name="android.intent.category.DEFAULT" />

  < category android:name="android.intent.category.OPENABLE" />

  < data android:mimeType="audio/music1" />

  < /intent-filter>

  < /activity>

  < activity android:name=".TestActivity"

  android:label="TestActivity">

  < intent-filter>

  < action android:name="android.intent.action.GET_CONTENT" />

  < category android:name="android.intent.category.DEFAULT" />

  < category android:name="android.intent.category.OPENABLE" />

  < data android:mimeType="audio/music1" />

  < /intent-filter>

  < /activity>

  3. 使用TestActivity

  Java代码

  public void sendChooser(){

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

  intent.setDataAndType(Uri.parse("file:///sdcard/DCIM/cc.mp3"), "audio/music1");

  startActivity(Intent.createChooser(intent, "Select music1 app"));

  }

  public void sendChooser(){

  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

  intent.setDataAndType(Uri.parse("file:///sdcard/DCIM/cc.mp3"), "audio/music1");

  startActivity(Intent.createChooser(intent, "Select music1 app"));

  }

  4. emulator 运行截图:

 

本文转载自:http://www.elexcon.com/news/55868.html

墨梅
粉丝 16
博文 218
码字总数 43367
作品 0
杭州
后端工程师
私信 提问
Android 开发之:Intent.createChooser() 妙用

Intent.createChooser(ntent target, CharSequence title) 其实 大家对该功能第一影响就是ApiDemo 里面的 其只有区区几行代码 提取为: 执行之 会弹出一个对话框 效果为: 其实 对于这段代码...

鉴客
2010/06/21
10K
2
android开发之Intent.Action

本文介绍Android中Intent的各种常见作用。 1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开始。比较常用。 Input:nothing Output:nothing <activity a......

一别经年
2014/01/21
55
0
Android开发之Intent.Action

介绍Android中Intent的各种常见作用。 1 Intent.ACTION_MAIN String: android.intent.action.MAIN 标识Activity为一个程序的开始。比较常用。 Input:nothing Output:nothing <activity andro......

xiahuawuyu
2012/09/24
272
0
Android使用Intent一键分享图片文字到腾讯、新浪、开心、人人等

现在分享应用很多,消耗研发与维护时间,增加项目成本,而且集成分享功能后我们的应用包会比以前要大几MB。其实有android的Intent可以满足分享文字和图片的需求,而且不增加应用包的大小。 ...

simpower
2014/09/20
10.9K
0
Android 调用第三方浏览器打开网址或下载文件

/** * 调用第三方浏览器打开 * @param context * @param url 要浏览的资源地址 */ public static void openBrowser(Context context,String url){ final Intent intent = new Intent(); int......

丁佳辉
07/19
90
0

没有更多内容

加载失败,请刷新页面

加载更多

DevOps是如何实现效率的提升?

随着企业业务对软件系统日益依赖,IT管理与研发模式也随之对“敏态”模式产生了需求,也就是今天时常提起的DevOps。提升效率,是DevOps实践的核心内容之一。就让我们来一起从软件生命周期的业...

嘉为科技
2分钟前
0
0
总结:linux目录之proc

我们系统大部分的基础数据采集,其实就是读取proc目录下的文件,并解析获取数据的过程。 1、如cpu利用率:直接cat /proc/cpuinfo命令,然后获取输出内容,并解析里面的数据,如cpu核数等; ...

浮躁的码农
4分钟前
1
0
比原Bapp红包应用

喜迎国庆期间,比原链在自己的移动端钱包Bycoin(下载地址)和google插件钱byone中推出了红包应用,在国庆期间深受大家好评。 那我们今天就来大概介绍一下比原红包,以及基于比原链开发dapp应用...

比原链Bytom
5分钟前
1
0
Linux中没有rc.local文件的解决方法

Linux中没有rc.local文件的解决方法是什么呢?这应该是很多工程师比较头疼的问题,下面就给大家例举几个解决办法。 比较新的Linux发行版已经没有rc.local文件了。因为已经将其服务化了。 解决...

xiangyunyan
6分钟前
0
0
数据中台在阿里巴巴集团内部的实践情况

作者:品鉴 数据中台门在阿里巴巴集团干什么的,由哪个部门掌管?数据中台在阿里巴巴的主要作用是什么呢?外面吹嘘这么神秘的数据中台在阿里实践的如何呢?今天小编正好要采访数据技术及产品...

阿里云官方博客
6分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部