2月22日andro学习笔记——Intent

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文件名称
			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);
			}
		});




如何打开一个网页:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值