Intent
Intent是一个与基本组件相关联的数据对象。用来指定我们要启动的目标组件。
IntentFilter
对Intent进行过滤,比如启动一个active,如何让操作系统知道我们启动的是哪个active。IntentFilter是用来描述一个基本组件所在的地址。Intent是用来启动或者激活的组件目标。
http://developer.android.com/guide/components/intents-filters.html
在active中设置所属的xml文件
setContentView(R.layout.aty);aty为xml文件名称
i.setComponent(new ComponentName("com.cyx.l008intents", "com.cyx.l008intents.aty"))
前面是写包名,后面的类名要写完整的名称。
action用来指定启动的目标。
如果想通过action来启动一个activity,则需要给activity配置intent-filter
显示Intent
明确知道启动activity的包名和完全类名
隐式Intent
仅仅通过一个action来启动,与action所匹配的activity可能会有多个,如果用这种方式,最终是由操作系统来进行启动。需要在AndroidManifest.xml中的activity配置intent-filter,这个是让操作系统来进行过滤到底启动那个activity。action名字的命名,全部包名.intent.action.名称。后面需要接目录名称。
category用来给指定的activity进行分类
隐式调用图片流程
首先在DDMS中导入图片,打开DDMS,是在eclipse右上角一个加号包包建,选择导入DDMS,这样就能导入了,另外导入的图片名称不能含有中文。
这样是调用系统的图片查看器来查看图片
具体执行哪个是由操作系统自己定位
当过滤器过滤完事,如果只有一个activity,则默认第一个打开,如果有多个activity,则会让用户选择
如果用自己的Intent,如何来让自己的activity来进行呈现呢?
如何调用打电话的程序:
如何打开一个网页:
Intent是一个与基本组件相关联的数据对象。用来指定我们要启动的目标组件。
IntentFilter
对Intent进行过滤,比如启动一个active,如何让操作系统知道我们启动的是哪个active。IntentFilter是用来描述一个基本组件所在的地址。Intent是用来启动或者激活的组件目标。
http://developer.android.com/guide/components/intents-filters.html
在active中设置所属的xml文件
setContentView(R.layout.aty);aty为xml文件名称
public void onClick(View v) {
Intent i = new Intent();
i.setComponent(new ComponentName("com.cyx.l008intents", "com.cyx.l008intents.aty"));
startActivity(i);
}
i.setComponent(new ComponentName("com.cyx.l008intents", "com.cyx.l008intents.aty"))
前面是写包名,后面的类名要写完整的名称。
action用来指定启动的目标。
如果想通过action来启动一个activity,则需要给activity配置intent-filter
显示Intent
明确知道启动activity的包名和完全类名
隐式Intent
仅仅通过一个action来启动,与action所匹配的activity可能会有多个,如果用这种方式,最终是由操作系统来进行启动。需要在AndroidManifest.xml中的activity配置intent-filter,这个是让操作系统来进行过滤到底启动那个activity。action名字的命名,全部包名.intent.action.名称。后面需要接目录名称。
<activity android:name="Aty">
<intent-filter >
<action android:name="com.cyx.l008intents.intent.action.aty"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
category用来给指定的activity进行分类
隐式调用图片流程
首先在DDMS中导入图片,打开DDMS,是在eclipse右上角一个加号包包建,选择导入DDMS,这样就能导入了,另外导入的图片名称不能含有中文。
调用代码:
public void onClick(View v) {
// TODO Auto-generated method stub
File f = new File("/mnt/sdcard/QQ20140218164139.jpg");
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(f), "image/*");
startActivity(i);
}
这样是调用系统的图片查看器来查看图片
具体执行哪个是由操作系统自己定位
当过滤器过滤完事,如果只有一个activity,则默认第一个打开,如果有多个activity,则会让用户选择
如果用自己的Intent,如何来让自己的activity来进行呈现呢?
package com.cyx.l008intents;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
public class ImageViewer extends Activity {
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
iv = new ImageView(this);
setContentView(iv);
iv.setImageURI(getIntent().getData());
}
}
如何调用打电话的程序:
findViewById(R.id.btnTelWB).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("tel:123456"));
startActivity(i);
}
});
如何打开一个网页: