隐式意图的使用
来源:互联网 发布:淘宝充气泵怎么试用? 编辑:程序博客网 时间:2024/06/06 03:22
提到隐式意图:首先应想到显示意图,也就是我们开发中常用的。
显示意图一般是打开本应用自己的界面使用;而隐式意图则是打开其他应用的界面,例如分享,打开mp3等,隐式意图是对自己代码进行保护。
上代码:
<activity android:name="com.example.andong.share.implicitintent.OwnActivity"> <intent-filter > <!--可以定制多个动作 程序中只要有一个匹配就行 --> <action android:name="android.andong.second"/> <!--自定义的category --> <category android:name="android.andong.category" /> <!--默认的类别,必须有 --> <category android:name="android.intent.category.DEFAULT" /> <!--路径匹配 协议://主机名:端口号/路径 --> <data android:scheme="http" android:host="www.andong.com" android:port="8080" android:path="/person"/> <!--数据类型匹配 --> <data android:mimeType="person/jpeg"/> </intent-filter></activity>
解读:Intent intent3 = new Intent();intent3.setAction("android.andong.second");intent3.addCategory("android.andong.category");intent3.setDataAndType(Uri.parse("http://www.andong.com:8080/person"), "person/jpeg");startActivity(intent3);
action:相当于一个动作,可以有多个,满足一个即可
category:其中android默认的是必须有的,其次自己可以自定义;在startActivity时,会将默认的category加上
data:相当于一个uri,(<scheme>://<host>:<port>/[<path>|<pathprefix>|<pathpattern>],例如:http://www.baidu:80:search/info)
mimeType:表示本页面可处理的类别(能处理什么东西);
这里需要注意一点:setData和setType不能一起使用,因为这两个方法会批次清楚对方的值;要使用setDataAndType方法
如果两个activity的intent-filter完全一样,那么会在页面底部弹出对话框让你选择跳转那个页面,就好比分享弹出来很多一样;
在start时,如果有两个activity,如下:
<activity android:name="com.example.andong.share.implicitintent.OwnActivity"> <intent-filter > <!--可以定制多个动作 程序中只要有一个匹配就行 --> <action android:name="android.andong.second"/> <!--必须指定一个类别 用startActivity启动 --> <category android:name="android.andong.category" /> <!--默认必须指定一个类别 用startActivity启动 --> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity><activity android:name="com.example.andong.share.implicitintent.Own1Activity"> <intent-filter > <!--可以定制多个动作 程序中只要有一个匹配就行 --> <action android:name="android.andong.second"/> <!--默认必须指定一个类别 用startActivity启动 --> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>
Intent intent3 = new Intent();intent3.setAction("android.andong.second");startActivity(intent3);
那么启动的是Own1Activity;如果Own1Activity不存在,那么启动的是OwnActivity。
最后,当我们通过隐式方式启动一个activity的时候,可以先做一下判断,这样就可规避隐式开启的错误了:
1.采用PackageManager的queryIntentActivity方法
public abstract List<ResolveInfo> queryIntentActivities(Intent intent,int flags);
2.采用PackageManager的resolveActivity方法或者Intent的resolveActivity方法
public abstract ResolveInfo resolveActivity(Intent intent, int flags);
Intent intent3 = new Intent();intent3.setAction("android.andong.second1");intent3.addCategory("android.andong.category");intent3.setDataAndType(Uri.parse("http://www.andong.com:8080/person"), "person/jpeg");if(null==intent3.resolveActivity(getPackageManager())){ Toast.makeText(this, "resolveActivity==null", Toast.LENGTH_SHORT).show();}else{ startActivity(intent3);}
- 隐式意图的使用
- 显示意图和隐式意图的使用场景
- Android之显示意图与隐式意图的使用场景
- 显示Intent和隐式Intent的使用(意图)
- Intent之隐式意图 setAction的使用
- Android的隐式意图
- Intent 的 隐式意图
- Android的隐式意图
- 隐式意图的剖析
- android的隐式意图
- 隐式意图与显式意图的基础
- 显式意图和隐式意图的区别小结
- Intent中显示意图和隐式意图的用法
- Android 显示意图和隐式意图的区别
- Android 显示意图和隐式意图的区别
- Intent中显示意图和隐式意图的用法
- Intent意图的使用
- android中一些隐式意图使用
- July 15th 模拟赛C T1 游泳池 Solution
- jquery 循环获取选中checkBox框的值
- linux内核分析之rbtree的使用
- Spring boot bean加载错误排查
- 获取屏幕高度、宽度
- 隐式意图的使用
- 获取单选框中的值
- Oracle 正常关闭后 startup mount 提示监听程序当前无法识别连接描述附中请求的服务
- Modular exponentiation模幂的计算方法
- js刷新当页面
- table is not mapped
- memcache java
- 运泰捆草
- php生成excel文件的多种方法