当前位置: 首页 > news >正文

Xamarin.Android中Intent的使用

目录

  • 1、说明
  • 2、使用方法
    • 2.1 常用方法
    • 2.2 调用系统应用
  • 3、参考资料

1、说明

在Android开发中常常会用到Intent进行不同活动启动,整理资料如下

2、使用方法

2.1 常用方法

1、一般情况而言,都是使用如下的方式进行调用

Intent intent = new Intent(this, typeof(UpLoadService));
intent.PutExtra("serviceType", "once");
StartService(intent);

也存在调用第三方的情况

Intent intent = new Intent("android.intent.action.MAIN");
intent.setClassName("当前Act的全限定类名","启动Act的全限定类名");
startActivity(intent);

具体可参考这篇文章:Android 启动一个Activity的几种方式

2、传递数组参数

//加载
var intent = new Intent(this, typeof(TranslationHistoryActivity));
intent.PutStringArrayListExtra("phone_numbers", phoneNumbers);
StartActivity(intent);//获取数据---在某个Activity中获取数据
protected override void OnCreate(Bundle bundle)
{base.OnCreate(bundle);// Create your application herevar phoneNumbers = Intent.Extras.GetStringArrayList("phone_numbers") ?? new string[0];this.ListAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);
}

3、使用Bundle传递

//加载
public static MineFragment NewInstance(MainActivity mainActivity, string employeeID,string employeeName,string loginTime)
{var frag1 = new MineFragment(mainActivity);Bundle bundle = new Bundle();bundle.PutString("id", employeeID);bundle.PutString ("name", employeeName);bundle.PutString("loginTime", loginTime);frag1.Arguments = bundle;return frag1;
}//获取时使用
string employeeID = Arguments.GetString("id", "");
string employeeName = Arguments.GetString("name", "");
string loginTime = Arguments.GetString("loginTime", "");

4、在Activity中使用

加载数据

//加载数据
Bundle bundle = new Bundle();        //得到bundle对象  
bundle.putString("sff", "value值");  //key-"sff",通过key得到value-"value值"(String型)  
bundle.putInt("iff", 175);           //key-"iff",value-175  
intent.putExtras(bundle);            //通过intent将bundle传到另个Activity  
startActivity(intent);//读取数据
Bundle bundle = this.getIntent().getExtras(); //读取intent的数据给bundle对象     
String str1 = bundle.getString("sff"); //通过key得到value     
int int1 = bundle.getInt("iff"); 

5、使用Handler

//加载数据
Message message=new Message();//new一个Message对象     
message.what = MESSAGE_WHAT_2;//给消息做标记  
Bundle bundle = new Bundle(); //得到Bundle对象    
bundle.putString("text1","消息传递参数!");  //往Bundle中存放数据    
bundle.putInt("text2",44);  //往Bundle中put数据    
message.setData(bundle);//mes利用Bundle传递数据  
mHandler.sendMessage(message);//Handler将消息放入消息队列//读取数据
String str1=msg.getData().getString("text1");  
int int1=msg.getData().getString("text2");

2.2 调用系统应用

有时需要调用系统的应用,例如发短信、打电话之类,则需要指定Action
Intent有很多overload形式,以下两种比较常用:

public Intent(String action)
public Intent(String action, Uri uri) 

例如拨打电话:

//Java写法
Uri uri = Uri.parse("tel:10086"); 
// 参数分别为调用拨打电话组件的Action和获取Data数据的Uri 
Intent intent = new Intent(Intent.ACTION_DIAL, uri); 
startActivity(intent); //Xamarin写法
var intent = new Intent(Intent.ActionCall);
intent.SetData(Android.Net.Uri.Parse("tel:" + Intent.GetStringExtra("phoneNumber")));
StartActivity(intent);

Intent调用常见系统组件有如下:


// 调用浏览器 
Uri webViewUri = Uri.parse("http://blog.csdn.net/zuolongsnail"); 
Intent intent = new Intent(Intent.ACTION_VIEW, webViewUri); // 调用地图 
Uri mapUri = Uri.parse("geo:100,100"); 
Intent intent = new Intent(Intent.ACTION_VIEW, mapUri); // 播放mp3 
Uri playUri = Uri.parse("file:///sdcard/test.mp3"); 
Intent intent = new Intent(Intent.ACTION_VIEW, playUri); 
intent.setDataAndType(playUri, "audio/mp3"); // 调用拨打电话 
Uri dialUri = Uri.parse("tel:10086"); 
Intent intent = new Intent(Intent.ACTION_DIAL, dialUri); 
// 直接拨打电话,需要加上权限<uses-permission id="android.permission.CALL_PHONE" /> 
Uri callUri = Uri.parse("tel:10086"); 
Intent intent = new Intent(Intent.ACTION_CALL, callUri); // 调用发邮件(这里要事先配置好的系统Email,否则是调不出发邮件界面的) 
Uri emailUri = Uri.parse("mailto:zuolongsnail@163.com"); 
Intent intent = new Intent(Intent.ACTION_SENDTO, emailUri); 
// 直接发邮件 
Intent intent = new Intent(Intent.ACTION_SEND); 
String[] tos = { "zuolongsnail@gmail.com" }; 
String[] ccs = { "zuolongsnail@163.com" }; 
intent.putExtra(Intent.EXTRA_EMAIL, tos); 
intent.putExtra(Intent.EXTRA_CC, ccs); 
intent.putExtra(Intent.EXTRA_TEXT, "the email text"); 
intent.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
intent.setType("text/plain"); 
Intent.createChooser(intent, "Choose Email Client"); // 发短信 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.putExtra("sms_body", "the sms text"); 
intent.setType("vnd.android-dir/mms-sms"); 
// 直接发短信 
Uri smsToUri = Uri.parse("smsto:10086"); 
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); 
intent.putExtra("sms_body", "the sms text"); 
// 发彩信 
Uri mmsUri = Uri.parse("content://media/external/images/media/23"); 
Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra("sms_body", "the sms text"); 
intent.putExtra(Intent.EXTRA_STREAM, mmsUri); 
intent.setType("image/png"); // 卸载应用 
Uri uninstallUri = Uri.fromParts("package", "com.app.test", null); 
Intent intent = new Intent(Intent.ACTION_DELETE, uninstallUri); 
// 安装应用 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File("/sdcard/test.apk"), "application/vnd.android.package-archive"); // 在Android Market中查找应用 
Uri uri = Uri.parse("market://search?q=愤怒的小鸟");   
Intent intent = new Intent(Intent.ACTION_VIEW, uri); 

3、参考资料

1、Android应用开发中Intent的作用及使用方法
2、Android中Bundle

相关文章:

Xamarin.Android中Intent的使用

目录 1、说明2、使用方法2.1 常用方法2.2 调用系统应用 3、参考资料 1、说明 在Android开发中常常会用到Intent进行不同活动启动&#xff0c;整理资料如下 2、使用方法 2.1 常用方法 1、一般情况而言&#xff0c;都是使用如下的方式进行调用 Intent intent new Intent(th…...

matplotlib绘制方波圆周分解动画

1 方波的圆周分解 在学习傅里叶变换的时候&#xff0c;有一个经典的示例是方波的分解。我们知道&#xff0c;方波可以分解为无数个正弦波的叠加。而正弦波&#xff0c;又可以看作是圆周运动在一条直线上的投影。当时为了理解这个事情&#xff0c;恐怕大家也花了不少时间。 学…...

vue3+ts 实现枚举

首先 index.ts 中定义枚举 export const fruit [{key:1,name:苹果,},{key:11,name:草莓},{key:5,name:香蕉,},{key:51,name:葡萄,},{key:6,name:橙子},{key:7,name:哈密瓜},{key:10,name:西瓜}, ]; 接口返给的数据是一个对象 feeMap{ 1&#xff1a;200&#xff0c; 2&…...

【Python】5分钟了解11个最佳的Python编译器和解释器

11个最佳Python编译器和解释器 1. Brython2. Pyjs3. WinPython4. Skulpt5. Shed Skin6. Active Python7. Transcrypt8. Nutika9. Jython10. CPython11. IronPython结论原文链接 Python是一门初学者的编程语言。它是一种高级语言&#xff0c;非常灵活、解释性和面向对象的语言。…...

如何安装、部署、启动Jenkins

一、测试环境 Linux系统 Centos 7 二、安装步骤&#xff1a; 1、安装jdk 我安装的是jdk8&#xff0c;此处就不多说了&#xff0c;自己百度哈&#xff0c;很简单 2、安装jenkins 首先依次执行如下三个命令&#xff1a; 2.1、导入镜像&#xff1a; [rootcentos7 ~]# sudo …...

sqlalchemy flask长时间未使用 导致数据库连接失效

临时解决方案&#xff1a;在正式运行定时任务之前&#xff0c;先跑一个session.query()&#xff0c;相当于唤醒连接。 参考 https://blog.csdn.net/sinat_42483341/article/details/103723691...

Ubuntu 20.04 系统或图像界面卡死或完全无响应处理方法

Ubuntu 20.04 系统或图像界面卡死或完全无响应处理方法 问题背景无需重启方法安全重启方法 问题背景 Ubuntu 20.04在安装驱动程序时系统突然无响应&#xff0c;终端也无法运行&#xff1b;考虑到尽量不破坏系统&#xff0c;不希望强制上下电重启机器&#xff0c;以免损坏文件系…...

Linux编辑器 - vim使用

1.vim的基本概念 Vim是一个广泛使用的文本编辑器&#xff0c;它是在Unix和Linux系统中常用的命令行文本编辑器之一。 vim的主要三种模式 ( 其实有好多模式&#xff0c;目前掌握这 3 种即可 ), 分别是 命令模式 &#xff08; command mode &#xff09;、 插入模式 &#xff0…...

【Windows】磁盘快捷修复

【Windows】磁盘快捷修复 1、背景2、关于Chkdsk3、示例 1、背景 前段时间使用U盘拷贝文件过程中&#xff0c;突然发现U盘无法读取了&#xff0c;U盘里面存储的数据也无法获取。 然后使用windows系统的chkdsk命令进行修复。 chkdsk全称&#xff1a;checkdisk&#xff0c;即磁盘…...

Java 线程的多种状态

前言 在前文中详细介绍了线程的启动、中断、休眠、等待。本文详细介绍线程的多种状态。 获取线程的当前状态代码是&#xff1a; 线程对象.getState(); 目录 前言 一、NEW 二、RUNNABLE 三、BLOCKED 四、WAITNG 五、TIMED_WAITNG 六、TERMINATED 结语 一、NEW Thread 对…...

AI绘画| 迪士尼风格|可爱头像【附Midjourney提示词】

Midjourney案例分享 图片预览 迪士尼风格&#xff5c;可爱头像 高清原图及关键词Prompt已经放在文末网盘&#xff0c;需要的自取 在数字艺术的新时代&#xff0c;人工智能绘画已经迅速崭露头角。作为最先进的技术之一&#xff0c;AI绘画结合了艺术和科学&#xff0c;开启了一…...

【浪费了我两个小时时间】Microsoft store无法加载页面0x80131500

绕的圈&#xff0c;踩的坑 谷歌搜索&#xff0c; newbing搜索都叫我清理缓存&#xff0c;重新安装等方法。 还被这篇文章误导了一下&#xff1a;微软应用商店错误代码0x80072EFD怎么办&#xff1f;&#xff08;已解决&#xff09; 加上重启电脑各种试不行。 最后想到要去改代…...

【动态规划】子序列系列

文章目录 动态规划&#xff08;子序列系列&#xff09;1. 最长递增子序列2. 摆动序列3. 最长递增子序列的个数4. 最长数对链5. 最长定差子序列6. 最长的斐波那契子序列的长度7. 最长等差数列8. 等差数列划分 || - 子序列 动态规划&#xff08;子序列系列&#xff09; 1. 最长递…...

URL存储解锁数据管理的新思路,重新定义数据传输与共享(@vue/repl)

Thinking系列&#xff0c;旨在利用10分钟的时间传达一种可落地的编程思想。 近日&#xff0c;在了解 vue/repl 相关内容&#xff0c;其通过 URL 进行数据存储&#xff0c;感觉思路惊奇&#xff0c;打开了新方式。 首先&#xff0c;通过 URL 存储最大的便利是&#xff1a;无需服…...

matlab程序中文乱码

不同版本的matlab共存在GBK&#xff08;即&#xff0c;ANSI&#xff09;和UTF-8两种编码方式&#xff0c;因此可能会出现乱码问题。 第一步&#xff1a;在matlab的命令行窗口输入指令&#xff0c;查看当前编码方式 feature(locale) 第二步&#xff1a;用Notepad打开文件&…...

【计算机视觉|语音分离】期望在嘈杂环境中聆听:一个用于语音分离的不依赖于讲话者的“音频-视觉模型”

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Looking to Listen at the Cocktail Party: A Speaker-Independent Audio-Visual Model for Speech Separation 链接&#xff1a;Looking to listen at the cocktail party: a speaker-in…...

curl 介绍和使用

文章目录 一、介绍1.1 curl 介绍1.2 curl 参数介绍1.3 类似Curl的工具和库 二、使用2.1 curl 下载2.2 curl 示例用法2.3 curl命令使用digest方式验证用户 一、介绍 1.1 curl 介绍 官网&#xff1a;https://curl.se/GitHub源码&#xff1a;https://github.com/curl/curl Curl…...

5、VMWARE安装、MobaXterm SSH连接 、Ubuntu xrdp安装使用

以下是在VMware中安装Ubuntu 22.04的详细步骤&#xff1a; 下载Ubuntu 22.04镜像文件&#xff1a; 前往Ubuntu官方网站或其他可信来源&#xff0c;下载Ubuntu 22.04的镜像文件&#xff08;.iso格式&#xff09;。 创建虚拟机&#xff1a; 打开VMware Workstation软件&#xf…...

Docker dockerfile 案例:centos 支持 vim

创建一个 centos 容器&#xff0c;容器内默认是不支持使用 vim 指令的&#xff0c;只能使用 vi 指令。&#xff08;附&#xff1a;Dockerfile 语法与指令&#xff09; 但想在创建 centos 容器后就支持 vim 指令&#xff0c;需要自定义 centos&#xff0c;编写 dockerfile&…...

Git忽略已经提交过一次的文件 Git忽略文件

1、从未提交过的文件可以用.gitignore 也就是添加之后从来没有提交&#xff08;commit&#xff09;过的文件&#xff0c;可以使用.gitignore忽略该文件 该文件只能作用于未跟踪的文件&#xff08;Untracked Files&#xff09;&#xff0c;也就是那些从来没有被 git 记录过…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...