(Android review)显示意图激活与隐式意图激活

一、基本知识点

1、<activity android:label="第一个activity" android:name=".Main2Activity"/>

label属性:某个Acivity的标题

2、R文件不要引错了,引成Android底层的了

3、intent.setClass(this, Main2Activity.class);
第一个参数:上下文
第二个参数:要激活的组件的字节码文件

4、显示意图激活(明确指定了要激活的组件)
1)intent.setClass(this, Main2Activity.class);

2)intent.setClassName(this, "com.njupt.multiactivity.Main2Activity");
第二个参数:需要打开的组件的全类名

3)intent.setClassName(getPackageName(), "com.njupt.multiactivity.Main2Activity");
getPackageName():获取AndroidManefest中<manifest>节点下的package属性的值

4)intent.setComponent(new ComponentName(this, Main2Activity.class));

5)Intent intent = new Intent(this,Main2Activity.class);

5、<Button 
android:onClick="open"/>
多个控件可以激发同一个事件处理函数,这里激发的open函数

6、隐式意图激活(之前激活浏览器什么的都是这样干的)
1)<activity android:name=".Main3Activity" android:label="闅愬紡鎰忓浘婵€娲荤殑activity">
            <intent-filter >
                <action android:name="com.njupt.action.main3"/>//action的name可以随便起
                <category android:name="android.intent.category.DEFAULT"/>//这个一定要有,否则会报错.以上是mini配置
                <category android:name="com.njupt.categroy.main3"/>//没有太大的意义,加了这一行也不会有太大影响
                <data android:scheme="itcast" android:mimeType="image/jpeg"/>
            </intent-filter>
        </activity>
在AndroidManifest.xml中配置了action、category、data,在代码中就一定需要进行相应的设置
//指定动作名称
  intent.setAction("cn.itcast.action.main3");
//设置数据
// intent.setData(Uri.parse("itcast:"));
//设置mime_type
//   intent.setType("image/jpeg");//会自动把data清掉,所以这是应该改成
intent.setDataAndType(Uri.parse("itcast:"), "image/jpeg");

7、mimetype的类型可以在tomcat中找(conf/web.xml)中

8、使用隐式意图打开浏览器
Intent intent = new Intent();
    intent.setAction("android.intent.action.VIEW");
    intent.setData(Uri.parse("http://www.baidu.com"));

startActivity(intent);

二、举例

1、MainActivity

package com.example.multiactivity;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
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.main);
	}

	public void open(View view){

		int id = view.getId();
	    if(id == R.id.open1){

	    	/**
	    	 * 以下演示了显示意图激活的5种方式
	    	 */
//	    	Intent intent = new Intent();
//	    	intent.setClass(this, MainActivity2.class);
//	    	intent.setClassName(this, "com.example.multiactivity.MainActivity2");
//	    	System.out.println("---------->" + getPackageName());
//	    	intent.setClassName(getPackageName(), "com.example.multiactivity.MainActivity2");//注意了第二个参数都是全类名
//	    	intent.setComponent(new ComponentName(this, MainActivity2.class));

	    	Intent intent = new Intent(this, MainActivity2.class);
	    	startActivity(intent);
	    }else if(id == R.id.open2){
	    	Intent intent = new Intent();
	    	intent.setAction("hellointent");
//	    	intent.setData(Uri.parse("zhangzetian:"));
//	    	intent.setType("image/jpeg");
	    	intent.setDataAndType(Uri.parse("zhangzetian:"), "image/jpeg");

	    	startActivity(intent);
	    }else if(id == R.id.open3){
	    	Intent intent = new Intent();
	    	intent.setAction(("android.intent.action.VIEW"));
	    	intent.setData(Uri.parse("http://www.baidu.com"));

	    	startActivity(intent);
	    }
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

2、MainActivity2

package com.example.multiactivity;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity2 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.main2);
	}
}

3、MainActivity3

package com.example.multiactivity;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity3 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.main3);
	}
}

4、在显示意图激活和隐式意图激活的过程中,其实AndroidManifest.xml文件是很重要的。故在此附上AndroidManifest.xml的全部代码:

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.multiactivity.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.multiactivity.MainActivity2"
            android:label="这是第二个Activity"
            />

        <activity android:name="com.example.multiactivity.MainActivity3">
            <intent-filter >
                <action android:name="hellointent"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="asdasd"/>
                <data android:scheme="zhangzetian" android:mimeType="image/jpeg"/>
            </intent-filter>

        </activity>
    </application>

</manifest>

三、源码下载:

http://download.csdn.net/detail/caihongshijie6/7792167

(Android review)显示意图激活与隐式意图激活

时间: 2024-10-13 02:30:18

(Android review)显示意图激活与隐式意图激活的相关文章

隐式意图&amp;显示意图

1 隐式意图 通过指定一组动作或者数据 开启activity 2 显示意图 通过指定具体包名和类名 开启activity 总结 (1)显示意图更加安全一些 (2)开启自己应用的界面用显示意图(不需要配置意图过滤器) (3)隐式意图一般开启系统应用(电话拨号器 短信的发送器等等)的界面

显式意图和隐式意图总结

package com.example.wang.myapplication; import android.content.ComponentName; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; public class Mai

无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

【黑马Android】(07)多线程下载的原理/开源项目xutils/显示意图/隐式意图/人品计算器/开启activity获取返回值

多线程下载的原理 司马光砸缸,多开几个小水管,抢救小朋友. import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import

android隐式意图激活自定义界面

我们也可以使用隐士意图激活自定义的界面,并且可以携带数据: 效果: 点击第二个按钮后: 附代码: 主窗体的代码: 1 package com.yy.twoactivity; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.net.Uri; 6 import android.os.Bundle; 7 import android.view.View; 8 9 public clas

android隐式意图激活浏览器

在有些时候,我们可能想打开某个不确定的应用,比如,我们想要通过浏览器打开百度的站点,但是我们并不强调必须要使用哪一个浏览器,那么这种情况我们使用显示意图可能不太好,更好的做法是使用隐式意图打开网站. 效果: 点击按钮后: 附代码: 1 package com.yy.activity; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.net.Uri; 6 import androi

Android 显示意图和隐式意图的区别

意图在android的应用开发中是很重要的,明白了意图的作用和使用后,对开发会有很大帮助.如果没有把意图搞懂,以后开发应用会感觉缺些什么. 意图的作用: 1.激活组件 2.携带数据 3.意图的匹配(运用到隐式意图) android基本的设计理念是鼓励减少组件间的耦合,因此android提供了Intent(意图),用意图激活其他组件.Intent提供了一种通用的消息系统,它允许在你的应用程序与其他应用程序间传递Intent来执行和产生事件.使用Intent可以激活android应用的三个核心组件:

[android] 隐式意图激活另外一个activity

随着api的升级,系统的很多应用包名和类名都改掉了,所以很多时候,打开系统应用的时候会报错,隐式意图就是解决组件之间松耦合,描述动作行为 获取Intent对象,通过new出来 调用Intent对象的setAction(action)方法,设置动作,参数:String类型的常量例如:Intent.ACTION_VIEW 调用Intent对象的setData(data)方法,设置数据,参数:Uri对象, 例如:网址Uri.parse(“http:xxx”); 调用startActivity(inte

Android 学习之显式激活与隐式激活Activity

在res界面里面有两个布局文件activity_main和acivity_two activity_main里面有如下四个按钮 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" an