Android笔记 定义意图过滤器intent- filter demo

本例建立在显示意图demo基础上 修改处我会加粗

1修改清单文件 配置第二个界面的意图过滤器

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.a66_intent_1"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.a66_intent_1.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.example.a66_intent_1.Activity2"
            android:label="@string/app_name" >
<strong>            <intent-filter>

                <!-- 指定动作及类别 -->
                <action android:name="com.chj.xxx" />

                <category android:name="android.intent.category.DEFAULT" />
                <!-- 指定数据 scheme描述规则:语法前缀 host:主机名 port:端口号   path:进一步路径 -->
                <!-- android:host="" -->
                <!-- android:path="" -->
                <!-- android:port="" -->
                <!-- mimeType数据类型 如 JPG 对应image/JPEG 用到时可查询 -->
                <data
                    android:mimeType="vnd.android.cursor.item/haha"
                    android:scheme="chj" />
            </intent-filter></strong>
        </activity>
    </application>

</manifest>
2修改第一个界面的布局 添加一个按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="界面1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="跳转" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click3"
        android:text="跳转到系统应用" />

<strong>    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click4"
        android:text="隐式意图跳转" /></strong>

</LinearLayout>

3第一Activity添加click4点击事件

package com.example.a66_intent_1;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	// 四种方法来进行显示意图跳转
	public void click(View view) {
		Intent intent = new Intent(MainActivity.this, Activity2.class);
		startActivity(intent);
	}

	// public void click(View view) {
	// Intent intent =new Intent();
	// intent.setClassName(MainActivity.this,
	// "com.example.a66_intent_1.Activity2");
	// startActivity(intent);
	// }

	// public void click() {
	// Intent intent =new Intent();
	// intent.setClass(MainActivity.this, Activity2.class);
	// startActivity(intent);
	// }
	// 以上三种方式跳转意思一致

	public void click3(View view) {
		Intent intent = new Intent();
		// setClassName方法有俩种 此处与24行的是不同的setClassName方法
		// 一般系统应用包名可能会被开发商更改 因此可能执行不成功 接下来会学习隐式意图来跳转到系统组件界面
		intent.setClassName("com.sec.android.gallery3d",
				"com.sec.android.gallery3d.app.Gallery");
		startActivity(intent);
	}

	// 隐式意图跳转到第二个界面

	<strong>// 显示意图根据包名类名激活组件 二隐式意图根据动作等参数实现组件的激活
	public void click4(View view) {
		Intent intent = new Intent();
		// 设置跳转动作和类别 设置为第二个界面指定的动作和类别(之前在清单文件配置的)
		//category.一般用于指定附加信息 环境参数 没有就使用默认值
		intent.setAction("com.chj.xxx");
		intent.addCategory("android.intent.category.DEFAULT");//最好都写上 避免出错
		// //设置跳转数据 之前在清单文件配置的
		// intent.setData(Uri.parse("chj:hehe"));
		// //指定数据mimeType 与清单文件一致
		// intent.setType("vnd.android.cursor.item/haha");
		// 如果既有数据又有mineType则使用以下方法
		intent.setDataAndType(Uri.parse("chj:hehe"),
				"vnd.android.cursor.item/haha");

		startActivity(intent);
	}</strong>

}
4第二个Activity可以获取第一界面的数据

package com.example.a66_intent_1;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class Activity2 extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity2);
		//获取到激活它的intent
		Intent intent = getIntent();
<strong>		//获取到intent里的数据
		Uri uri =intent.getData();
		String res = uri.toString();
		Toast.makeText(this, "取得数据"+res, Toast.LENGTH_SHORT).show();</strong>
		
	}

	public void click2(View view) {
		Intent intent =new Intent();
		intent.setClass(Activity2.this, MainActivity.class);
		startActivity(intent);
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值