首页 > 编程知识 正文

intent(一个intent组件包含哪些属性)

时间:2023-05-03 23:53:20 阅读:76008 作者:3381

当我们想在程序中用外部APP应用程序执行请求时,通常通过Intent。 那么,安卓如何知道使用哪个APP应用程序(和组件)来响应这个请求呢? 使用Intent Filiter,APP应用程式可以宣告支援的资料和动作。 Intent表示在数据集上执行的操作请求,Intent Filiter声明特定的APP应用程序组件可以对一种类型的数据执行操作。 在3358www.Sina.com/上,可以使用以下选项卡: 使用http://www.Sina.com/Android 3360 name属性指定要服务的操作的名称。 每个Intent Filiter必须至少有一个操作(标签)。

使用3358 www.Sina.com/Android 3360 name属性指定为action服务的情况。 每个Intent Filiter可以包含多个category标记。 这意味着可以指定自己的类别,也可以使用android提供的标准值。

Intent Filiterdata标记允许您指定组件可以执行的数据类型。 在某些情况下,还可以包含多个数据标签。 可以使用以下属性的任意组合来指定组件支持的数据:

action:指定有效的主机名

指定category:组件可以执行的数据类型

data:指定URI的有效路径值

android:host:指定主机的有效端口

需要特定模式,如33558www.Sina.com/content或http

activity Android 3360 name='.my activity ' Android : label=' @字符串/app _ name ' intent-filteractionandroid 3360 name category Android 3360 name=' Android.intent.category.default '/category Android 3360 name=' Android.intent.categor id数据Android 3360 scheme=' http ' Android 3360 host=' www.csdn.com

当隐式Intent传递到startActivity时,确定启动哪个Activity的过程称为Intent分析。 目的是找到最匹配的英特尔过滤器

android:minetype:Android列出了已安装软件包的可用intent过滤器。

解析33558www.Sina.com/intent时关联的操作或类型不匹配的intent过滤器将从列表中删除

如果Intent Filter包含指定的动作,则认为动作匹配。 如果检测到没有与Intent中指定的操作匹配的操作,则匹配操作将视为失败

在category匹配中,Intent过滤器必须包含要解析的Intent中的所有category。 当然,也可以包含其他类别

android:path:最后一个Intent的数据URI的每一部分与Intent过滤器的数据标记进行比较。 如果Intent Filter指定了方案、host/authoriy、path或MIME类型,则所有这些值都将与Intent的URI进行比较。 如果存在任何不匹配项,Intent Filter将从列表中删除。 未指定数据值的Intent Filter与所有Intent数据值匹配。

android:port:隐式启动单个Activity时,如果此进程解析了多个组件,则所有可能匹配的组件都将呈现给用户。 对于Broadcast Receiver,每个匹配的接收器都会接收Broastcast Intent

下面写着android:scheme:。 很容易理解。

package com.example.testintentfilter; 导入安卓. app.activity; 导入Android.content.int

ent;import android.net.Uri;import android.os.Bundle;import android.view.View;//下面注释的方式也是可行的public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void start1(View v) {Intent intent = new Intent();Uri uri = Uri.parse("http://blog.csdn.net/chenliqiang12345678");intent.setAction("myaction");intent.setDataAndType(uri, "a/b"); //startActivity(intent);//这里需要注意的是,Type属性和Data属性一般会出现相互覆盖的情况,如果希望Intent既有Data属性也有Type属性,必须通过setDataAndType()方法来实现。/*Intent intent = new Intent("myaction", Uri.parse("http://blog.csdn.net/chenliqiang12345678"));startActivity(intent);*/}public void start2(View v) {Uri uri = Uri.parse("http://blog.csdn.net/chenliqiang12345678");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);/*Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("http://blog.csdn.net/chenliqiang12345678");intent.setData(content_url);startActivity(intent);*/}public void start3(View v) {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("http://blog.csdn.net/chenliqiang12345678");intent.setData(content_url);intent.setClassName("com.UCMobile", "com.UCMobile.main.UCMobile"); //此处指定UC浏览器打开网页,当前packageName为:com.UCMobile className:为com.UCMobile.main.UCMobilestartActivity(intent);}}package com.example.testintentfilter;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.widget.Toast;public class TestActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);String action = this.getIntent().getAction();final Uri data = this.getIntent().getData();String type = this.getIntent().getType();Toast.makeText(this, "action is:"+action+"rnuri is :"+data.toString()+"rntype is :"+type+"rn2s latter will be open", Toast.LENGTH_SHORT).show();new Handler().postDelayed(new Runnable() {@Overridepublic void run() {Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.setData(data);startActivity(intent);}}, 2000);}}<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testintentfilter" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.testintentfilter.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.testintentfilter.TestActivity" android:label="@string/title_activity_test" > <intent-filter > <action android:name="myaction"/> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http" android:path="blog.csdn.net/chenliqiang12345678"/> <!-- <data android:scheme="http" android:host="blog.csdn.net" android:path="/chenliqiang12345678"/> --> <data android:mimeType="a/b"></data> </intent-filter> </activity> </application></manifest>源码下载

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。