【Android基础】(5)应用核心之Intent
2014-12-16 10:41
387 查看
文章地址:/article/1876456.html
ComponentName构造方法第一个参数传应用的包名,第二个参数传要启动的Activity的完整类名。这种方式是显示Intent。
这种方式是隐式Intent。
接下来我们继续用一个隐式Intent启动一个图片浏览器:
假设我们在SD卡根目录放了一个pic.jpg的图片文件,然后使用如下:
如果我们新建一个ImageActivity,在Manifest中作如下配置:
ImageActivity如下:
一 Intent对象介绍
1. Component name
我们可以根据一个Component name来启动一个Activity:Intent intent = new Intent(); intent.setComponent(new ComponentName("com.thr.testandroid", "com.thr.testandroid.OtherActivity")); startActivity(intent);
ComponentName构造方法第一个参数传应用的包名,第二个参数传要启动的Activity的完整类名。这种方式是显示Intent。
2. Action
我们还可以根据Action来启动Activity,首先需要在Manifest中将要新启动的Activity节点内增加intent-filter节点:<activity android:name="com.thr.testandroid.OtherActivity" > <intent-filter> <action android:name="com.thr.intents.intent.action.OtherActivity" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>之后我们就可以用另一种方式启动Activity:
Intent intent = new Intent( "com.thr.intents.intent.action.OtherActivity"); startActivity(intent);
这种方式是隐式Intent。
3. Category
用来给Intent进行分类4. Extras
封装数据用5. Flags
用来指定启动时的启动模式二 IntentFilter概念
1. 图片查看
通过上面的例子,应该能稍微了解到IntentFilter的意思,它可以通过过滤器,隐式的启动Activity,这样子就可能会匹配的Activity不止一个。接下来我们继续用一个隐式Intent启动一个图片浏览器:
假设我们在SD卡根目录放了一个pic.jpg的图片文件,然后使用如下:
File file = new File("/mnt/sdcard/pic.jpg"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "image/*"); startActivity(intent);就会发现调用了Android系统的图片浏览器打开了我们刚才放的图片。
如果我们新建一个ImageActivity,在Manifest中作如下配置:
<activity android:name="com.thr.testandroid.ImageActivity" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" android:scheme="file" /> </intent-filter> </activity>此处的action是使用系统的action
android.intent.action.VIEW
ImageActivity如下:
package com.thr.testandroid; import android.app.Activity; import android.os.Bundle; import android.widget.ImageView; public class ImageActivity extends Activity { private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); iv = new ImageView(this); setContentView(iv); iv.setImageURI(getIntent().getData()); } }此时再次执行上面的startActivity方法就会发现,多了一个选择一个是系统给的图片浏览器,另一个可以选择我们刚才自己写的那个intent打开。这也就是如何自己写一个图片浏览器的思路。
2. 电话拨号
那么如何使用Intent来拨打电话呢?还是用到了IntentFilter:Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("tel:10010")); startActivity(intent);
3. 打开网页
使用IntentFilter打开网页:Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com")); startActivity(intent);调用就会直接调用浏览器打开百度。
相关文章推荐
- Android基础:通过Intent实现进程间通信(两个应用之间)
- [Android基础知识] 之六:Intent.Action的各种常见应用
- Intent,Android应用核心探秘(1)
- Android学习笔记之Android应用核心Intent
- android 应用五大核心组件之三(Intent)
- Android应用核心Intent的学习
- Android应用的核心基础
- android基础总结篇之九:Intent应用详解 .
- Android基础--Intent应用详解
- Android4开发入门经典 之 第二部分:Android应用的核心基础
- android基础总结篇之九:Intent应用详解
- Android 从入门到精通 第6章 Android应用的核心 Intent
- Android应用基础——Intent Permission Fragment
- Android4开发入门经典 之 第二部分:Android应用的核心基础
- Android4开发入门经典 之 第二部分:Android应用的核心基础
- Intent,Android 应用核心探秘(1)
- android基础总结篇之九:Intent应用详解
- Android应用协调器------Intent[转]
- Android基础教程(九)之自定义下拉菜单模式----Spinner与setDropDownViewResource的应用
- Android基础教程之-----访Iphone 拖动相片特效Gallery的简单应用.