Android开发:显式/隐式Intent意图跳转Activity总结
显式跳转
是在已知包名和类名的情况下常用的跳转方法:
Intent mIntent = new Intent(); mIntent.setClassName("com.android.settings","com.android.settings.Settings"); mContext.startActivity(mIntent);
我们也常这么用:
Intent intent = new Intent(mContext, XXActivity.class); startActivity(intent);这是跳转到当前应用的某个Activity,相信大家都十分熟悉,今天主要讲的是如何使用隐式intent意图跳转
隐式跳转
1、隐式跳转之Action跳转
<activity android:name=".ActionActivity"; <intent-filter action android:name="customer_action_here" </intent-filter> </activity>
//创建一个隐式的 Intent 对象:Action 动作 Intent intent = new Intent(); //设置 Intent 的动作为清单中指定的action intent.setAction("customer_action_here"); startActivity(intent);
2、隐式跳转之Category跳转
<activity android:name=".CategoryActivity" > <intent-filter> <action android:name="customer_action_here" /> <category android:name="customer_category_here" /> </intent-filter> </activity>
我们可以使用如下代码进行跳转到以上Activity:
//创建一个隐式的 Intent 对象:Category 类别 Intent intent = new Intent(); intent.setAction("customer_action_here"); //添加与清单中相同的自定义category intent.addCategory("customer_category_here"); startActivity(intent);
3、隐式跳转之Data跳转
< activity android:name=".DataActivity"> < intent-filter> < category android:name="android.intent.category.DEFAULT" /> < data android:scheme="content" android:host="com.example.intentdemo" android:port="8080" android:pathPattern=".*pdf" android:mimeType="text/plain"/> < /intent-filter> < /activity>
我们可以使用如下代码进行跳转:
//创建一个隐式的 Intent 对象,方法四:Date 数据 Intent intent = new Intent(); Uri uri = Uri.parse("content://com.example.intentdemo:8080/abc.pdf"); //注:setData、setDataAndType、setType 这三种方法只能单独使用,不可共用 //单独以 setData 方法设置 URI //intent.setData(uri); //单独以 seType 方法设置 Type //intent.setType("text/plain"); //上面分步骤设置是错误的,要么以 setDataAndType 方法设置 URI 及 mime type intent.setDataAndType(uri, "text/plain"); startActivity(intent);
4、隐式跳转之调用系统应用
4.1 使用浏览器浏览网页
//web浏览器 Uri uri= Uri.parse("http://www.baidu.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
4.2 调用地图
//打开地图查看经纬度 Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
4.3 调用电话拨号(不需要拨号权限)
Uri uri = Uri.parse("tel:10086"); Intent intent = new Intent(Intent.ACTION_DIAL, uri);//注意区别于下面4.4的action startActivity(intent);
4.4 调用电话直接拨号(需要拨号权限)
Uri uri = Uri.parse("tel:15980665805"); Intent intent = new Intent(Intent.ACTION_CALL, uri);//注意区别于上面4.3的aciton startActivity(intent);
4.5 调用短信程序(无需发送短信权限,接收者自填)
Intent intent = new Intent(Intent.ACTION_VIEW); intent.putExtra("sms_body", "这里写短信内容"); intent.setType("vnd.android-dir/mms-sms"); startActivity(intent);
4.6 调用短信程序(无需发送短信权限)
Uri uri = Uri.parse("smsto:10086");//指定接收者 Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra("sms_body", "你这个黑心运营商"); startActivity(intent);
4.7 调用邮件程序
Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:[email protected]")); intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题"); intent.putExtra(Intent.EXTRA_TEXT, "这是内容"); startActivity(intent);
4.8 调用媒体播放器
Intent intent = new Intent(Intent.ACTION_VIEW); //Uri uri = Uri.parse("file:///sdcard/zhy.mp3"); Uri uri = Uri.parse("file:///sdcard/a.mp3"); intent.setDataAndType(uri, "audio/mp3"); startActivity(intent);
4.9 调用搜索
Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, "android"); startActivity(intent);
总结
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。