Activity 生命周期



显式 Intent 调用

 1     //创建一个显式的 Intent 对象(方法一:在构造函数中指定)2      Intent intent = new Intent(Intent_Demo1.this, Intent_Demo1_Result1.class);3       4      Bundle bundle = new Bundle();5      bundle.putString("id", strID); 6      intent.putExtras(bundle);7      8      intent.putExtra("name", "bbb"); 9      intent.putExtra("userInfo", new UserInfo(1, "name"));10      startActivity(intent);11     12      //创建一个显式的 Intent 对象(方法二:用 setClass 方法)13      Intent intent = new Intent();14      Bundle bundle = new Bundle();15      bundle.putString("id", strID);16      intent.setClass(Intent_Demo1.this, Intent_Demo1_Result1.class);17      intent.putExtras(bundle);18      startActivity(intent);19      20      //创建一个显式的 Intent 对象(方法三:用 setClass 方法)21      Intent intent = new Intent();22      Bundle bundle = new Bundle();23      bundle.putString("id", strID);24      intent.setClassName(Intent_Demo1.this, "com.great.activity_intent.Intent_Demo1_Result1");25      intent.putExtras(bundle);26      startActivity(intent);27      28      //创建一个显式的 Intent 对象(方法四:用 setComponent 方法)29      Intent intent = new Intent();30      Bundle bundle = new Bundle();31      bundle.putString("id", strID);32      //setComponent方法的参数:ComponentName33      intent.setComponent(new ComponentName(Intent_Demo1.this, Intent_Demo1_Result1.class));34      intent.putExtras(bundle);35      startActivity(intent);

Intent隐式跳转 Action

 1     //创建一个隐式的 Intent 对象:Action 动作 2     /** 3      * 这里指定的是 AndroidManifest.xml 文件中配置的 4      * <intent-filter>标签中的<action android:name="com.great.activity_intent.Intent_Demo1_Result3" /> 5      * 所在的 Activity,注意这里都要设置 <category android:name="android.intent.category.DEFAULT" /> 6      */ 7     Intent intent = new Intent(); 8     //设置 Intent 的动作 9     intent.setAction("com.great.activity_intent.Intent_Demo1_Result3");10     Bundle bundle = new Bundle();11     bundle.putString("id", strID);12     intent.putExtras(bundle);13     startActivity(intent);

AndroidManifest.xml

1    <activity android:name="Intent_Demo1_Result3"
2                   android:label="Intent_Demo1_Result3">
3             <intent-filter>
4                <action android:name="com.great.activity_intent.Intent_Demo1_Result3" />
5                 <category android:name="android.intent.category.DEFAULT" />
6             </intent-filter>7         </activity>

Category 类别

 1 //创建一个隐式的 Intent 对象:Category 类别 2 Intent intent = new Intent();3 intent.setAction("com.great.activity_intent.Intent_Demo1_Result33"); 4 /** 5  * 不指定 Category 或 只指定 AndroidManifest.xml 文件中 <intent-filter> 标签中配置的任意一个 Category 6  * <category android:name="android.intent.category.DEFAULT" /> 除外,就可以访问该 Activity, 7  */ 8 intent.addCategory(Intent.CATEGORY_INFO); 9 intent.addCategory(Intent.CATEGORY_DEFAULT);10 Bundle bundle = new Bundle();11 bundle.putString("id", strID);12 intent.putExtras(bundle);13 startActivity(intent);

AndroidManifest.xml

  <activity android:name="Intent_Demo1_Result2"android:label="Intent_Demo1_Result2"><intent-filter><category android:name="android.intent.category.INFO" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>

Date 数据 跳转

 1 //创建一个隐式的 Intent 对象,方法四:Date 数据 2 Intent intent = new Intent(); 3 Uri uri = Uri.parse("http://www.great.org:8080/folder/subfolder/etc/abc.pdf"); 4
5 //注:setData、setDataAndType、setType 这三种方法只能单独使用,不可共用              6 //要么单独以 setData 方法设置 URI 7 //intent.setData(uri); 8 //要么单独以 setDataAndType 方法设置 URI 及 mime type 9 intent.setDataAndType(uri, "text/plain");10 //要么单独以 setType 方法设置 Type11 //intent.setType("text/plain");12 13 /**14  * 不指定 Category 或 只指定 AndroidManifest.xml 文件中 <intent-filter> 标签中配置的任意一个 Category15  * <category android:name="android.intent.category.DEFAULT" /> 除外,就可以访问该 Activity16  */17 Bundle bundle = new Bundle();18 bundle.putString("id", strID);19 intent.putExtras(bundle);20 startActivity(intent);

AndroidManifest.xml

 1         <activity android:name="Intent_Demo1_Result2" 2                   android:label="Intent_Demo1_Result2"> 3             <intent-filter> 4                 <category android:name="android.intent.category.DEFAULT" /> 5                 <data 6                     android:scheme="http" 7                     android:host="www.great.org" 8                     android:port="8080" 9                     android:pathPattern=".*pdf"10                     android:mimeType="text/plain"/>11             </intent-filter>12         </activity>13

 调用系统的的组件

 

    //web浏览器Uri uri= Uri.parse("http://www.baidu.com:8080/p_w_picpath/a.jpg");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);    //地图(要在 Android 手机上才能测试)Uri uri = Uri.parse("geo:38.899533,-77.036476");Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);    //路径规划Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");Intent it = new Intent(Intent.ACTION_VIEW, uri);startActivity(it);    //拨打电话-调用拨号程序Uri uri = Uri.parse("tel:15980665805");Intent intent = new Intent(Intent.ACTION_DIAL, uri);startActivity(intent);    //拨打电话-直接拨打电话    //要使用这个必须在配置文件中加入<uses-permission android:name="android.permission.CALL_PHONE"/>Uri uri = Uri.parse("tel:15980665805");Intent intent = new Intent(Intent.ACTION_CALL, uri);startActivity(intent);    //调用发送短信程序(方法一)Uri uri = Uri.parse("smsto:15980665805");Intent intent = new Intent(Intent.ACTION_SENDTO, uri);intent.putExtra("sms_body", "The SMS text");startActivity(intent);    //调用发送短信程序(方法二)Intent intent = new Intent(Intent.ACTION_VIEW);     intent.putExtra("sms_body", "The SMS text");     intent.setType("vnd.android-dir/mms-sms");     startActivity(intent);    //发送彩信Uri uri = Uri.parse("content://media/external/p_w_picpaths/media/23");Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra("sms_body", "some text");intent.putExtra(Intent.EXTRA_STREAM, uri);intent.setType("p_w_picpath/png");startActivity(intent);    //发送Email(方法一)(要在 Android 手机上才能测试)Uri uri = Uri.parse("mailto:zhangsan@gmail.com");Intent intent = new Intent(Intent.ACTION_SENDTO, uri);startActivity(intent);    //发送Email(方法二)(要在 Android 手机上才能测试)Intent intent = new Intent(Intent.ACTION_SENDTO);  intent.setData(Uri.parse("mailto:zhangsan@gmail.com"));  intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");  intent.putExtra(Intent.EXTRA_TEXT, "这是内容");  startActivity(intent); //发送Email(方法三)(要在 Android 手机上才能测试)Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题");  intent.putExtra(Intent.EXTRA_TEXT, "这是内容");intent.setType("text/plain");    //选择一个邮件客户端startActivity(Intent.createChooser(intent, "Choose Email Client"));  //发送Email(方法四)(要在 Android 手机上才能测试)Intent intent = new Intent(Intent.ACTION_SEND);    //收件人String[] tos = {"to1@abc.com", "to2@abc.com"};    //抄送人String[] ccs = {"cc1@abc.com", "cc2@abc.com"};    //密送人String[] bcc = {"bcc1@abc.com", "bcc2@abc.com"};intent.putExtra(Intent.EXTRA_EMAIL, tos);    intent.putExtra(Intent.EXTRA_CC, ccs);intent.putExtra(Intent.EXTRA_BCC, bcc);intent.putExtra(Intent.EXTRA_SUBJECT, "这是标题"); intent.putExtra(Intent.EXTRA_TEXT, "这是内容");    intent.setType("message/rfc822");    startActivity(Intent.createChooser(intent, "Choose Email Client"));    //发送Email且发送附件(要在 Android 手机上才能测试)Intent intent = new Intent(Intent.ACTION_SEND);    intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");    intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mp3/醉红颜.mp3");    intent.setType("audio/mp3");    startActivity(Intent.createChooser(intent, "Choose Email Client"));    //播放媒体文件(android 对中文名的文件支持不好)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);Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");     Intent intent = new Intent(Intent.ACTION_VIEW, uri);     startActivity(intent); //音乐选择器    //它使用了Intent.ACTION_GET_CONTENT 和 MIME 类型来查找支持 audio/* 的所有 Data Picker,允许用户选择其中之一Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("audio/*");    //Intent.createChooser:应用选择器,这个方法创建一个 ACTION_CHOOSER IntentstartActivity(Intent.createChooser(intent, "选择音乐"));Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT); intent1.setType("audio/*");Intent intent2 = new Intent(Intent.ACTION_CHOOSER);intent2.putExtra(Intent.EXTRA_INTENT, intent1);intent2.putExtra(Intent.EXTRA_TITLE, "aaaa");startActivity(intent2);    //                //设置壁纸//                Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER);
//                startActivity(Intent.createChooser(intent, "设置壁纸"));  //卸载APK    //fromParts方法    //参数1:URI 的 scheme    //参数2:包路径    //参数3:Uri uri = Uri.fromParts("package", "com.great.activity_intent", null);    Intent intent = new Intent(Intent.ACTION_DELETE, uri);     startActivity(intent);    //安装APK(???)Uri uri = Uri.fromParts("package", "com.great.activity_intent", null);  Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);startActivity(intent);    //调用搜索Intent intent = new Intent();  intent.setAction(Intent.ACTION_WEB_SEARCH);  intent.putExtra(SearchManager.QUERY, "android");  startActivity(intent);
 多个Activity之间传值可以通过Bundle对象存储需要传递的数据,例如:
  在IntentDemoActivity里面传值,
  Intent explicitIntent=new Intent(IntentDemoActivity.this, ExplicitActivity.class); //这是在Intent的构造函数中指定EditText nameText=(EditText)findViewById(R.id.username);// 通过Bundle对象存储需要传递的数据 Bundle bundle=new Bundle();bundle.putString("userName", nameText.getText().toString());//把Bundle对象bundle给explicitIntentexplicitIntent.putExtras(bundle);startActivity(explicitIntent);
  在ExplicitActivity获取值:
  //获取Intent中的Bundle对象Bundle bundle = this.getIntent().getExtras();//获取Bundle中的数据,注意类型和keyString userName=bundle.getString("userName");
两个个Activity之间切换
在ExplicitActivity页面上加一个返回按钮,并在事件写如下代码:/*给上一个Activity返回结果*/Intent intent=new Intent(ExplicitActivity.this, IntentDemoActivity.class); //这是在Intent的构造函数中指定
ExplicitActivity.this.setResult(RESULT_OK,intent);
/*结束本Activity*/
ExplicitActivity.this.finish();这样就返回到IntentDemoActivity这个Activity去了。

转载于:https://blog.51cto.com/jinchao/1603745

Activity详解 Intent显式跳转和隐式跳转, 及多个Activity之间传值 总结相关推荐

  1. [安卓基础] 009.组件Activity详解

    组件Activity详解 这篇文章学到得内容 1.什么是Activity 2.Activity的生命周期 3.如何保存Activity的状态 4.Activity之间切换时,相互之间生命周期的执行顺序 ...

  2. Android9.0 Launcher启动Activity详解(一)

    一.开始 Launcher中点击应用图标启动Activity,其开始方法是 public boolean startActivitySafely(View v, Intent intent, Item ...

  3. python 动态执行 内存变化_详解Pytorch显存动态分配规律探索

    下面通过实验来探索Pytorch分配显存的方式. 实验显存到主存 我使用VSCode的jupyter来进行实验,首先只导入pytorch,代码如下: import torch 打开任务管理器查看主存与 ...

  4. 微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉

    微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉 五点差分,九点差分 差分格式,紧差分格式 直拍,只有pdf版方法说明 word版 ...

  5. 无法将类型int隐式转换为string_Scala implicit 隐式转换安全驾驶指南

    这篇短文将结合实例对隐式转换的各种场景进行解释和总结,希望看完的人能够安全驶过隐式转换这个大坑. 隐式转换函数 隐式转换函数有两种作用场景. 1 转换为期望类型:就是指一旦编译器看到X,但需要Y,就会 ...

  6. Mysql 死锁过程及案例详解之显式与隐式锁Explicit Table Lock Implicit Table Lock

    显式锁Explicit Table Lock与隐式锁Explicit Table Lock 显式锁Explicit Table Lock 显式表锁(Explicit Table Locks)即通过命令 ...

  7. android intent例程,Android开发(四)| 探究活动(详解Intent+大量实例)

    在Android的开发项目中,Activity(活动)是最容易吸引到用户的地方,因为相比于算法.架构,它是实际可见的. Activity是一个可以包含用户界面的组件,主要用于和用户进行交互.一个用户程 ...

  8. Android 之 Activity 详解

    最近在学习Android开发方面的知识,整理了一下关于Android中Activity方面的知识,也算是对自己学的知识进行了总结.Activity 在 Android开发中有着极其重要的位置,Acti ...

  9. andriod studio中的显式跳转和隐式跳转

    比如要从A----->B 1.显式跳转 在A的activity中的匿名内部类(这里用匿名内部类)中的写如下代码: Intent intent = new Intent(this, BActivi ...

  10. Activity详解Activity的使用步骤、生命周期及其启动模式、启动方法

    开始我们先来回顾一下Activity的基础知识: Activity是应用程序的表现层,应用程序中可以包含多个Activity,它们之间可以相互跳转,来达到手机屏幕的切换.Activity通过View来 ...

最新文章

  1. 15 个变量和方法命名的最佳实践
  2. 喜马拉雅 xm文件转m4a_4K YouTube to MP3 Mac(YouTube转mp3软件)
  3. 1.Lambda表达式(新手写的!新手写的!新手写的!)(未完成)
  4. html字段隐藏,如何刮取动态隐藏的HTML字段(UuViewState)值?
  5. 为什么你的数据分析成果总是难以落地?
  6. 06 使用VS2012开发简单控制器程序 1214
  7. RDMA相关的技术网站
  8. MIPS 已死,转身投靠 RISC-V!
  9. Linux Kobject
  10. 拉里·佩奇 密歇根大学演讲
  11. 移动边缘计算(Mobile Edge Computing)MEC5G
  12. matlab 数据导入
  13. QT 基于Libvlc的视频播放器
  14. Android studio常用设置和快捷键
  15. 计算机实际应用,计算机在各个领域中的应用
  16. Parcel打包React
  17. 找1到n中缺失的数字(长度为n-1的整形数组,数字的范围在1到n,找其中一个缺失的数字)
  18. Centos7安裝GitHub
  19. spyder 设置中文_Spyder代理设置
  20. 发票OCR识别技术太屌了,哈哈哈哈

热门文章

  1. .Net中如何操作IIS(原理篇)
  2. iOS 算法的前世今生:算法原理、常用算法(二)加密算法
  3. HDU 2243 考研路茫茫——单词情结(AC自动机 + 矩阵快速幂)题解
  4. WPF: WrapPanel 容器的数据绑定(动态生成控件、遍历)
  5. 20154322 杨钦涵 Exp2 后门原理与实践
  6. memset 函数使用
  7. 基础DNS服务 轮训与泛域名解析
  8. Vim vimrc配置
  9. linux中ONBOOT=yes
  10. javascript拾遗