android_activity二种启动界面
来源:互联网 发布:mac系统装win8最新方法 编辑:程序博客网 时间:2024/06/05 15:51
启动界面的两种方式
- 显式意图
写法上简单多了,只要指定上下文,和具体的类就可以跳转
能够直接知道跳转的界面
注册: <activity android:name="com.itheima.start.Activity01"></activity> 跳转: Intent intent = new Intent(this , Activity01.class); startActivity(intent); 作用: 一般是启动自己程序的界面,其他程序的界面通过这种方式无法启动 如果使用了显式手法注册,还想被其他应用程序打开, 那么可以在activity标签里面,加上 android:exported="true"
- 隐式意图
写法上稍稍复杂,要指定action 和 data
看不出来跳转的界面,只有运行后才知道
注册: <activity android:name="com.itheima.start.Activity02"> <!-- 意图过滤器, 只要满足了action , 和 category .,那么久启动这个界面 --> <intent-filter > <action android:name="com.itheima.start.action.OPEN02"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> 跳转: Intent intent = new Intent(); intent.setAction("com.itheima.start.action.OPEN02"); intent.addCategory("android.intent.category.DEFAULT"); startActivity(intent);作用: 跳转其他的应用程序界面,或者是自己的应用程序界面想被其他的程序打开详细参数: action: 动作 category 分类 data: 指定数据, 一般关注两个:scheme 和 mimetype android:scheme="itheima" android:path="www.itheima" android:mimeType="text/plain"
举个例子:需求:在一个程序里面,使用显示和隐式跳转
我们把下面这个应用叫做04应用,包名是com.itheima.start
MainActivity
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //显式启动 public void click01(View v){ Intent intent = new Intent(this , Activity01.class); startActivity(intent); } //隐式启动 public void click02(View v){ Intent intent = new Intent(); intent.setAction("com.itheima.start.action.OPEN02"); intent.addCategory("android.intent.category.DEFAULT"); startActivity(intent); }}
Activity01
public class Activity01 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity01); }}
Activity02
public class Activity02 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity02); }}
AndroidManifest.xml
<!--这里是设置了显示跳转,如果这个activity还想让其他的应用程序打开,那么这个activity在注册的时候,必须要设置android:exported="true"--> <activity android:name="com.itheima.start.Activity01" android:exported="true"></activity> <!--只要满足意图过滤,外部的应用程序,也是可以跳转到这个activity的---> //跳转隐式意图,必须设置意图过滤 <activity android:name="com.itheima.start.Activity02"> <!-- 意图过滤器, 只要满足了action , 和 category .,那么久启动这个界面 --> <intent-filter > <action android:name="com.itheima.start.action.OPEN02"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
现在举一个外部程序,打开A应用的程序的例子
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //显式意图启动04应用01界面 public void click01(View v){ //Intent intent = new Intent(this ,Activity01.class); Intent intent = new Intent(); intent.setClassName("com.itheima.start", "com.itheima.start.Activity01");//使用setCalssName方法设置,//参数1:应用程序的包名//参数2:Activity01在注册清单文件的设置的值 startActivity(intent); } //隐式意图启动04应用02界面 public void click02(View v){ Intent intent = new Intent(); //需要满足意图过滤器 intent.setAction("com.itheima.start.action.OPEN02"); intent.addCategory(Intent.CATEGORY_DEFAULT); startActivity(intent); }}
细节:
<activity android:name="com.itheima.start.Activity02"> <intent-filter > <!-- 动作: 自己指定,一般都是包名.action名称的形式 --> <action android:name="com.itheima.start.action.OPEN02"/> <!-- 分类: default --> <category android:name="android.intent.category.DEFAULT"/> <!-- http://www.baidu.com --> <data android:scheme="itheima" android:path="www.itheima" android:mimeType="text/plain"/> </intent-filter> </activity>
注意的是:在设置data这个过滤的时候,必须要小心设置
Intent intent = new Intent(); intent.setAction("com.itheima.start.action.OPEN02"); intent.addCategory("android.intent.category.DEFAULT"); /* //在设置scheme和mimeType的时候,需要使用下面这个方法 //因为 //intent.setType(type); //intent.setData(Uri.parse()); //这2个方法是会互斥的,他们后设置的,会把前面的那个给清楚调,所以使用下面那个方法,一起设置了 */ intent.setDataAndType(Uri.parse("itheima://itheima.com2"), "text/plain");
0 0
- android_activity二种启动界面
- Android_Activity(二)
- Android_Activity的四种启动模式
- android_Activity的四种启动模式和onNewIntent()
- android_Activity的四种启动模式和onNewIntent()
- android_Activity
- android_Activity
- Android_Activity
- android_activity的生命周期和启动模式
- Android_Activity的4种加载模式
- Android_Activity的4种加载模式
- Android_Activity的4种加载模式
- 去电界面启动分析---之二
- android_activity隐式意图跳转到浏览器和短信的界面
- Android_Activity初步
- Android_Activity生命周期
- Android_Activity详解
- Android_Activity生命周期
- 层级式导航返回到特定activity
- 求最大公因数的若干方法
- 菲波那切数列:
- 【iOS开发系列】escape编码
- Hibernate与MyBatis的对比总结
- android_activity二种启动界面
- C语言,程序设计
- 打印出所有的“水仙花数”
- Nginx学习之六-nginx核心进程模型
- spark源码分析-storage
- [Matlab+C/C++] 读写二进制文件
- 节点-PC串口通信实验问题
- CF345div2B
- [leetcode] 329. Longest Increasing Path in a Matrix