Intent
2015-07-08 20:52
162 查看
1.隐式Intent
通过隐式Intent可以在不知道类名称的情况下 也能调用相关应用,也可以跨应用调用。
首先创建一个新的Activity,然后将视图与Activity绑定。在AndroidMenifest文件中对Activity进行注册。
默认是跨应用的,如果不跨应用,需对注册时的android:exported 进行处理。
分别如下:
调用方式与显示Intent不同,
2.Intent过滤器的相关
如果AndroidMenifest中有两个或多个相同的action android:name,则会出现选择的情况,如下:
这个时候该怎么选择呢,可以通过在一个配置的时候添加一个:
调用的时候代码为:startActivity(new Intent("com.example.ru.intenttest.intent.action.MyAty", Uri.parse("rxmapp://123")));。就显示这个默认的Activity了。
3,。如果是浏览器可以浏览则需配置
通过隐式Intent可以在不知道类名称的情况下 也能调用相关应用,也可以跨应用调用。
首先创建一个新的Activity,然后将视图与Activity绑定。在AndroidMenifest文件中对Activity进行注册。
默认是跨应用的,如果不跨应用,需对注册时的android:exported 进行处理。
分别如下:
public class MyAty extends Activity { //供其他调用的字符串,要同注册在AndroidMenifest.xml文件中的action -name相同。 public static final String ACTION="com.example.ru.intenttest.intent.action.MyAty"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.actyvity_my); //将视图与Activity绑定 } }
<activity android:name=".MyAty" android:exported="false"> <intent-filter> <category android:name="android.intent.category.DEFAULT"></category> <action android:name="com.example.ru.intenttest.intent.action.MyAty"></action> </intent-filter> </activity>
调用方式与显示Intent不同,
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // startActivity(new Intent(MainActivity.this,MyAty.class));//显式Intent startActivity(new Intent(MyAty.ACTION)); //隐式Intent } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnStartOther).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { startActivity(new Intent("com.example.ru.intenttest.intent.action.MyAty"));//跨应用,隐式调用 } catch (Exception e) { Toast.makeText(MainActivity.this,"No open",Toast.LENGTH_SHORT).show();//一定要show出来,(这是没权限时的提示) } } }); }
2.Intent过滤器的相关
如果AndroidMenifest中有两个或多个相同的action android:name,则会出现选择的情况,如下:
<activity android:name=".MyAty" android:label="myaty"> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="com.example.ru.intenttest.intent.action.MyAty" /> </intent-filter> </activity> <activity android:name=".MyActivity2Activity" android:label="@string/title_activity_my_activity2" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="com.example.ru.intenttest.intent.action.MyAty" /> </intent-filter> </activity>
这个时候该怎么选择呢,可以通过在一个配置的时候添加一个:
<activity android:name=".MyActivity2Activity" android:label="@string/title_activity_my_activity2" > <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <action android:name="com.example.ru.intenttest.intent.action.MyAty" /> <data android:scheme="rxmapp"></data> <!--给schema赋个自己写的值--> </intent-filter> </activity>
调用的时候代码为:startActivity(new Intent("com.example.ru.intenttest.intent.action.MyAty", Uri.parse("rxmapp://123")));。就显示这个默认的Activity了。
3,。如果是浏览器可以浏览则需配置
<category android:name="android.intent.category.BROWSABLE" <!--可被浏览的-->
相关文章推荐
- 【剑指offer】题目38 数字在排序数组中出现的次数
- 如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置
- HAproxy+keepalived+mysql高可用性Linux系统集群
- Unity 脚步 事件函数 的执行顺序
- Objective-C中的Block
- ACM--搬寝室
- freemarker XMLGregorianCalendar 转日期
- 2015湖南省队集训DAY6——B题(BZOJ4179)
- 名字的漂亮度
- Android入门(36)——第十三章 使用Gallery和ImageSwitcher制作图片浏览器
- Android java.io.NotSerializableException 错误
- 简单算法学习之快速排序详解
- oc 中四种实例变量的范围类型@private@protected@public@package
- 输入一段英文文本,用程序统计出现频率最高和最低的两个单词;
- 完全卸载干净Oracle11g
- [驱动] Framebuffer原理、使用、测试系列文章
- Project Euler:Problem 58 Spiral primes
- D3D粒子系统设计关键要点
- 字符串数字验证(算法)
- PHP学习笔记(十三):数组