Android笔记六.深入理解Intent和IntentFilter(二)
ComponentName comp=new ComponentName(ComponentAttr.this,SecondaryActivity.class);
Intent intent=new Intent(); intent.setComponent(comp);
startActivity(intent); 或者 startActivityForResult(intent,requestCode); //关闭启动的Activity会返回结果
<!-- 被intent启动的activity --> <activity android:name=".SecondaryActivity" android:label="第二个Activity界面" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <action android:name="action.CRAZYIT_ACTION"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
博主笔记1:除了上述Intent的setComponent方法,我们还可以利用setClass来指定需要启动的具体组件
public final String CUSTOME_ACTION="intent.action.CUSTOME_JIANG";//字符串可以任意 Intent intent=new Intent(); //创建一个Intent对象 intent.setAction(ActionAttr.CUSTOME_ACTION); //注意:ActionAttr为我们创建的类 startActivity(intent); //启动一个Activity
Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL); //其中ACTION_CALL为Intent类的静态成员变量,可以类直接调用 startActivity(intent);
public final String CUSTOME_ACTION="intent.action.CUSTOME_JIANG";//字符串可以任意 public final String CUSTOME_CATEGORY="intent.action.CUSTOME_CATEGORY";//字符串可以任意 Intent intent=new Intent(); //创建一个Intent对象 intent.setAction(ActionAttr.CUSTOME_ACTION); //注意:ActionAttr为我们创建的类 intent.addCategory(ActionAttr.CUSTOME_CATEGORY); startActivity(intent); //启动一个Activity
Intent intent=new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME);//返回Home桌面 startActivity(intent); //启动一个Activity 注意:这里无需设置AndroidManifest.xml
<activity android:name=".SecondaryActivity" android:label="第二个Activity界面" > <intent-filter> <action android:name="intent.action.JIANG_ACTION" /> <category android:name="intent.action.JIANG_CATEGORY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".ThirdActivity" android:label="第三个Activity界面" > <intent-filter> <action android:name="intent.action.JIANG_ACTION" /> <category android:name="intent.action.JIANG_CATEGORY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
博主笔记2:实际上,我们在开发包含"意图"的应用程序中,Action属性和Category属性是配合使用的。因为,Android系统会给主动Activity在AndroidManifest.xml中默认一个Action属性和Category属性,即:
package com.example.android_intent_2; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class ActionCateAttr extends Activity { //自定义一个action常量org.crazyit. public final static String CRAZYIT_ACTION="intent.action.JIANG_ACTION"; public final static String CRAZYIT_CATEGORY="intent.action.JIANG_CATEGORY"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first); Button btn=(Button)findViewById(R.id.button); btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //创建一个Intent对象 Intent intent=new Intent(); intent.setAction(ActionCateAttr.CRAZYIT_ACTION); //设置action属性 intent.addCategory(ActionCateAttr.CRAZYIT_CATEGORY); //设置category属性 startActivity(intent); }});//为btn注册一个事件监听器对象 /*返回桌面按钮*/ Button btn1=(Button)findViewById(R.id.home); btn1.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //创建一个Intent对象 Intent intent=new Intent(); intent.setAction(Intent.ACTION_MAIN); //设置action属性 intent.addCategory(Intent.CATEGORY_HOME);//设置category属性 startActivity(intent); }});//为btn注册一个事件监听器对象 } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android_intent_2" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".ActionCateAttr" android:label="第一个Activity界面" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondaryActivity" android:label="第二个Activity界面" > <intent-filter> <action android:name="intent.action.JIANG_ACTION" /> <category android:name="intent.action.JIANG_CATEGORY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".ThirdActivity" android:label="第三个Activity界面" > <intent-filter> <action android:name="intent.action.JIANG_ACTION" /> <category android:name="intent.action.JIANG_CATEGORY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest>
Intent intent=new Intent(); //创建一个Intent对象 String data="content://com.android.contacts/contacts/1"; Uri uri=Uri.parse(data); //将字符串转换为Uri intent.setAction(Intent.ACTION_VIEW); //设置Intent对象Action属性 intent.setData(uri); //设置Intent对象Data属性 startActivity(intent); 或者 Intent intent=new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("content://com.android.contacts/contacts/1")); startActivity(intent);
在Android中读取电话信息时,要注意加入 <use-permission android:name="android.permission.READ_CONTACTS"/> 在android中使用BroadcastReceiver时 <use-permission android:name="android.permission.RECEIVE_SMS"/> 在android中使用有关的文件下载功能时,要使用到的 <use-permission android:name="android.permission.INTERNET"/> <use-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
package com.android.android_intent_4; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.content.Intent; import android.net.Uri; import android.os.Bundle; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*第一个按键功能:打开网页*/ Button btn1=(Button)findViewById(R.id.button1); btn1.setOnClickListener(new OnClickListener(){ //为按钮1注册一个事件监听器对象 @Override public void onClick(View v) { //1.创建Intent Intent intent=new Intent(); //2.设置action、data属性 String data="http://www.baidu.com"; Uri uri=Uri.parse(data); //将字符串转化为Uri-通用资源标识 intent.setAction(Intent.ACTION_VIEW); //设置intent属性为系统预定义的Intent.ACTION_VIEW intent.setData(uri); //为intent设置数据属性,用于传递数据 //3.启动Activity startActivity(intent); }}); /*第二个按键功能:编辑标识为1的联系人*/ Button btn2=(Button)findViewById(R.id.button2); btn2.setOnClickListener(new OnClickListener(){ //为按钮1注册一个事件监听器对象 @Override public void onClick(View v) { //1.创建Intent Intent intent=new Intent(); //2.设置action、data属性 intent.setAction(Intent.ACTION_EDIT); //设置intent属性为系统预定义的Intent.ACTION_VIEW intent.setData(Uri.parse("content://com.android.contacts/contacts/1")); //为intent设置数据属性,根据指定的字符解析出Uri对象 //3.启动Activity startActivity(intent); }}); /*第三个按键功能:拨打电话18819465188*/ Button btn3=(Button)findViewById(R.id.button3); btn3.setOnClickListener(new OnClickListener(){ //为按钮1注册一个事件监听器对象 @Override public void onClick(View v) { //1.创建Intent Intent intent=new Intent(); //2.设置action、data属性 intent.setAction(Intent.ACTION_DIAL); //设置intent属性为系统预定义的Intent.ACTION_VIEW intent.setData(Uri.parse("tel:18819465188")); //根据指定的字符解析出Uri对象 //3.启动Activity startActivity(intent); }}); } }
Intent intent=new Intent(); //创建一个Intent对象 String data="lee://www.fkjava.org:8888/mypath"; Uri uri=Uri.parse(data); //将字符串转换为Uri intent.setAction(Intent.ACTION_VIEW); intent.setData(uri); //设置Intent对象Data属性 startActivity(intent); 或者 Intent intent=new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("lee://www.fkjava.org:8888/mypath")); startActivity(intent);
<data android:mimeType="" android:host="" android:port="" android:path="" android:pathPrefix="" android:pathPattern=""/>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。