Intent(意图)
Intent可以划分成显示意图和隐士意图
显示Intent:对于明确指出了目标组件名称的Intent,我们称之为
显示Intent
隐式Intent:没有明确指定组件名的Intent为隐式Intent
显示Intent如下
三种方式使用Intent方式
第一种
Intent intent1 = new Intent();
intent1.setClass(this,activity1.class);
startActivity(intent1);
第二种
Intent intent2 = new Intent();
intent2.setClassName(this,"com.example.dbproject.activity1");
startActivity(intent2);
第三种
Intent intent3 = new Intent3();
intent3.setClassName("com.example.dbproject","com.example.dbproject.activity1");
startActivity(intent3);
配置清单
<activity android:name=".activity1"></activity>
<activity android:name=".s.activity2"
android:exported="true"></activity>
android:exported="true"代表可以被其它应用程序调用
Intent可以激活Android应用的三个核心组件,
Activity
Service
BroadcastReceiver
隐式Intent如下:
<!-- 清单配置 -->
<!-- 这是第一个activity -->
<activity android:name=".activity_1">
<intent-filter>
<action android:name="com.cnnote.www" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<!-- 这是第二个activity,并且它的action名称第一个是一样的 -->
<activity android:name=".activity_2">
<intent-filter>
<action android:name="com.cnnote.www"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
代码中
public void onClick(View v){
Intent intent = new Intent();
intent.setAction("com.cnnote.www");
intent.addCategory(Intent.Category_DEFAULT);
startActivity(intent);
}
显示Intent和隐式Intent
Intent-filter就是像手机号码的白名单一样
当我们配置了Intent-filter,并且同时有几个项目,
他们的intent-filter的action都是一样的,那么在
执行这个软件操作的时候,就会弹出一个窗口提供用户选择
如果使用隐式Intent,就需要
使用action android:name="com.cnnote.test"
使用category android:name="android.intent.category.DEFAULT"
使用data android:scheme="http" android:host="www.baidu.com" android:port="8080" android:path="/image"
//当点击按钮后,执行如下操作,系统就会弹出提示,
//提供用户选择其中一个
Intent intent = new Intent();
intent.setAction("com.cnnote.test");
intent.addCategory(Intent.CATEGORY_DEAFAULT);
intent.setData(Uri.parse("http://www.baidu.com:8080/image"));
startActivity(intent);
<!-- 清单配置 -->
<!-- 这是第一个activity -->
<activity android:name=".activity_1">
<intent-filter>
<action android:name="com.cnnote.www" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http" android:host="www.baidu.com" android:port="80" android:path="/image"/>
</intent-filter>
</activity>
<!-- 这是第二个activity,并且它的action名称第一个是一样的 -->
<activity android:name=".activity_2">
<intent-filter>
<action android:name="com.cnnote.www"/>
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="www.baidu.com" android:port="80" android:path="/image"/>
</intent-filter>
</activity>
一条<intent-filter>至少包含一个<action/>
我们使用intent可以测试action
也可以单独测试category
<data android:scheme="http" />
<data android:scheme="http"
android:host="www.baidu.com" />
<data android:scheme="http"
android:host="www.baidu.com"
android:port="8080" />
<data android:scheme="http"
android:host="www.baidu.com"
android:port="8080"
android:path="/image" />
<data android:scheme="http"
android:host="www.baidu.com"
android:port="8080"
android:path="/image"
android:mimeType="text/plain" />
Intent intent = new Intent();
intent.setType("text/plain");
URL和URN,统称为URI
URI,同意资源定位符 Uniform Resource Locator
是对可以从互联网上得到的资源位置和访问方法的一种简介的表示
是互联网上标准资源的地址,互联网上的每个文件都应该有一个
唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
URN 统一资源名称 Uniform Resource Name 它是一种更新形式,不依赖位置
情切又可能减少失效连接是个数