(Android review)显示意图激活与隐式意图激活
一、基本知识点
1、<activity android:label="第一个activity" android:name=".Main2Activity"/>
label属性:某个Acivity的标题
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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。