HTML5技术

C#开发移动应用系列(4.调用系统应用,以及第三方应用(调用与被调用)) - GuZhenYin

字号+ 作者:H5之家 来源:H5之家 2017-07-07 09:01 我要评论( )

前言 上篇文章地址: C#开发移动应用系列(1.环境搭建) C#开发移动应用系列(2.使用WebView搭建WebApp应用) C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识) 写完这篇..本系列基本也就结束了. 看完这些,基本做个Webapp应该是毫无问题的了..其实略微有

前言

上篇文章地址:

C#开发移动应用系列(1.环境搭建)

C#开发移动应用系列(2.使用WebView搭建WebApp应用)

C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)

 

写完这篇..本系列基本也就结束了.

看完这些,基本做个Webapp应该是毫无问题的了..其实略微有点伤感,Xamarin确实是好东西..

奈何,生不逢时..等完善了. 开源了..社区化了..APP应用(指的是安装包类客户端)已经逐渐没落了..

算了,话不多说.开始正文

 

确定一下本篇的学习目标:

1.学会调用各类系统应用

2.学会调用相册并取得选择的照片

3.学会被调用(嗯..就是让别人调用你..)..

 效果图:

正文

1.学会调用各类系统应用

我们都知道,安卓有很多系统自带的应用..比如,打电话.发短信,相册,地图.Email.等等..

今天我们就来一个个的调用,并传值.

首先我们还是添加一个按钮,来测试调用第三方的应用.

如图:

然后,我们编写这个按钮的点击事件:

OnCreate(Bundle bundle) { btn3 = FindViewById<Button>(Resource.Id.button3); //添加点击事件 btn3.Click += delegate { //do... } }

准备工作搞定,我们来编写相关调用代码,来调用系统应用

1.1调用电话

Android.Net.Uri uri = Android.Net.Uri.Parse(= new Intent(Intent.ActionDial, uri); StartActivity(it);

代码很简单..就三句话.. tel后面调用你想拨打的电话.

1.2调用短信

// 发送短信 Android.Net.Uri uri = Android.Net.Uri.Parse(); Intent it = new Intent(Intent.ActionSendto, uri); it.PutExtra(, ); StartActivity(it);

嗯..你妹妹是你要发的短信..  smsto后面是你要发送给谁..

1.3调用地图

Android.Net.Uri uri = Android.Net.Uri.Parse(); Intent it = new Intent(Intent.ActionView, uri); StartActivity(it);

geo后面给坐标

1.4调用Email

Android.Net.Uri uri = Android.Net.Uri.Parse(); var intent = new Intent(Intent.ActionView,uri); StartActivity(intent);

1.5调用通讯录

 

//第一种(建议使用第一种) Android.Net.Uri uri = Android.Net.Uri.Parse(); Intent it = new Intent(Intent.ActionPick, uri); StartActivityForResult(it, 11); //第二种 Intent i = new Intent(); i.SetAction(Intent.ActionGetContent); i.SetType(); StartActivityForResult(i, 11);

1.6.(暂时就这些..没了 哈哈哈)

我们进入下个环节..

 

 

2.学会调用相册并取得选择的照片

同样,我们在点击事件中,修改代码如下:

Intent i = new Intent(); i.SetType(); i.SetAction(Intent.ActionPick); StartActivityForResult(i,11);

细心的朋友已经发现了..在1.4之前我们最后一句,都是StartActivity来打开应用的,1.5我们则用到了StartActivityForResult

大家一看方法名就很明白了..这个是打开应用之后,应用会给你返回值的打开方式.

那么,我们如何获得返回值呢?,其实前面一篇已经提到过了..我们的OnActivityResult方法,就是获取返回值的.

所以我们编写代码如下:

OnActivityResult(int requestCode, Result resultCode, Intent data) { //base.OnActivityResult(requestCode, resultCode, data); (requestCode == 1 && resultCode == Result.Ok) { webView.LoadUrl(data.GetStringExtra()); Toast.MakeText(+ data.GetStringExtra(), ToastLength.Short).Show(); } if(requestCode == 11 && resultCode == Result.Ok) { //获得返回值 Android.Net.Uri uri = data.Data; sdCardPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath; var filePath = System.IO.Path.Combine(sdCardPath, data.DataString); ContentResolver resolver = this.ContentResolver; string[] pojo = { MediaStore.Images.Media.InterfaceConsts.Data }; var cursor = this.ContentResolver.Query(uri, pojo, null, null, null); int column_index = cursor.GetColumnIndex(MediaStore.Images.Media.InterfaceConsts.Data); cursor.MoveToFirst(); var path = cursor.GetString(column_index); //通过文件地址获得文件流 FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read); BinaryReader r = new BinaryReader(fs); r.BaseStream.Seek([] pReadByte = r.ReadBytes((int)r.BaseStream.Length); ShowMessage(+ pReadByte.Length); } }

获取照片的步骤分为3步.

1.获取返回的值.(这是一个路径,但是不能直接拿来用)

2.将返回值转换成我们想要的文件路径(重点~直接复制我代码就好了..)

3.通过文件流读取文件,并得到字节(和.NET的IO操作一模一样)

 

这样,我们就完成了整个读取照片的过程..

 

3.学会被调用(嗯..就是让别人调用你..)..

嗯..这里也许会比较难理解..

我们举个栗子,大家都用windows系统, 压缩包肯定都知道..那打开压缩包..其实有很多软件.. rar  zip 7z什么的..我们有的时候安装多了..就会要选择一个默认的软件打开..

安卓里面也是一样,比如你碰到一个txt文件,你的APP不支持打开..那么就要选择一个第三方的打开,正好你写的APP是可以打开TXT的..所以 你要告诉别人,我可以打开..选我,.选我..

类似这样 - - ,不知道讲清楚没有..

我们上代码吧..

我们首先新建一个APP项目如下:

然后在MainActivity编写意图过滤特性,如下:

这里两个属性的意思是:Intent.ActionSend当用户的意图是发送操作的时候,类别设置为默认

这样我们就稍微过滤了一下意图..

然后,我们把这个APP部署在模拟器上,如图:

 

然后我们编写原来的点击事件,来调用这个APP,代码如下:

ite = new Intent(Intent.ActionSend); ite.PutExtra(Intent.ExtraText, ); StartActivity(Intent.CreateChooser(ite, ));

我们点击按钮,就会调用到APP3,如图:

 

上图中,我的APP3已经获取到WebApp测试发过来的数据.,所以下面,我们讲如何得到其他应用发过来的数据:

App3中的代码如下:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • createjs 小游戏开发实战 - beidan

    createjs 小游戏开发实战 - beidan

    2017-07-07 08:00

  • 每天一个Js小demo之移动端全景图场景实现-全景装修图。主要知识点:css3,旋转角度检测 - catEatBird

    每天一个Js小demo之移动端全景图场景实现-全景装修图。主要知识点:c

    2017-07-06 11:05

  • 关于拒绝测试驱动开发(NoTDD) - Leading

    关于拒绝测试驱动开发(NoTDD) - Leading

    2017-07-05 10:00

  • h5移动端设备像素比dpr介绍 - 冷板凳丶

    h5移动端设备像素比dpr介绍 - 冷板凳丶

    2017-07-02 12:00

网友点评