分类目录

展开|收起

看你喜欢

(1) (1) (42) (1) (1) (1) (16) (2) (1) (1) (4) (1) (2) (7) (4) (1) (1) (1) (1) (3) (1) (5) (1) (1) (1) (1) (1) (2) (1) (4) (4) (3) (1) (1) (2) (1) (37) (2) (1) (5) (3) (1) (4) (1) (1) (11) (3) (1) (9) (3) (1) (23) (2) (1) (2) (1) (1) (1) (1)

最新精华

《Android应用开发详解》- Chapter06_Intent_ComponentName – Intent的ComponentName属性

Intent的中文意思是“意图,意向”,可以把它理解成不同组件之间通信的“媒介”或者“信使”,也就是把“把我的意思、意图告诉它”。可以把它理解成进程间的消息通信机制。Intent可以用来启动一个Activity,或者启动一个Service,还可以发起一个广播(Broadcast)。具体用法见下表:

表1 Intent启动不同组件的方法
组件名称 方法名称
Activity startActivity()
startActivityForResult()
Service startService()
bindService()
Broadcasts sendBroadcast()
sendOrderedBroadcast()
sendStickyBroadcast()

Intent由以下几个部分组成:动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Component)和扩展信息(Extra)。通过这些可以启动其它组件并携带信息。

Intent在寻找(匹配)目标组件时有2种方法:第一,通过组件名称直接指定;通过Intent的Filter过滤指定。本例演示通过组件名称直接指定,后续的例子演示通过Filter过滤指定。

1. 布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<Button 
		android:text="测试Intent的组件名称属性" 
		android:id="@+id/myButton01" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"></Button>
</LinearLayout>

2. 布局文件my_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

	<TextView 
		android:text="@+id/TextView01" 
		android:id="@+id/TextView01" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"></TextView>
	
</LinearLayout>

3. MainActivity.java(包com.amaker.ch06.app)

package com.amaker.ch06.app;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
 * @author 郭宏志
 * 测试Intent的ComponentName属性
 */
public class MainActivity extends Activity {
	private Button btn;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 设置视图布局
        setContentView(R.layout.main);
        // 实例化Button
        btn = (Button)findViewById(R.id.myButton01);
        // 添加单击监听器
        btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 实例化组件名称
				ComponentName cn = new ComponentName(MainActivity.this, "com.amaker.ch06.app1.MyActivity");
				// 实例化Intent
		        Intent intent = new Intent();
		        // 为Intent设置组件名称属性
		        intent.setComponent(cn);
		        // 启动Activity
		        startActivity(intent);
			}
		});
    }
}

4. MyActivity.java(包com.amaker.ch06.app1)

package com.amaker.ch06.app1;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import com.amaker.ch06.app.R;

/**
 * @author 郭宏志
 * 测试Intent的ComponentName属性
 */
public class MyActivity extends Activity {
	// 声明TextView
	private TextView tv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	// 设置视图布局
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);
        // 获得Intent
        Intent intent = this.getIntent();
        // 获得组件名称对象
        ComponentName cn = intent.getComponent();
        // 获得包名称
        String packageName = cn.getPackageName();
        // 获得类名称
        String className = cn.getClassName();
        // 实例化TextView
        tv = (TextView)findViewById(R.id.TextView01);
        // 显示
        tv.setText("组件包名称:"+packageName+"\n"+"组件类名称:"+className);
    }
}

5. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.amaker.ch06.app"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.amaker.ch06.app1.MyActivity"/>
    </application>
    <uses-sdk android:minSdkVersion="3" />
</manifest> 

6. 运行结果

Chapter06_Intent_ComponentName-1

Chapter06_Intent_ComponentName-2

Chapter06_Intent_ComponentName实例源码:

Chapter06_Intent_ComponentName
标题: Chapter06_Intent_ComponentName (346 次点击)
文件: Chapter06_Intent_ComponentName.7z
大小: 15 kB
描述:

  打分:5.0/5 (共1人投票)
(浏览总计: 117 次)
Add Comment Register



发表回复

  

  

  

您可以使用这些HTML标签

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>