---恢复内容开始---
Xamarin.Form怎么调用原生包
今天我想和大家分享的是有关Xamarin如何调用安卓的原生代码,下面的例子以大家可能会经常用到的微信WX方法的调用。
首先我们新建一个Xamarin.Android工程。
Xamarin.Form怎么调用原生包
今天我想和大家分享的是有关Xamarin如何调用安卓的原生代码,下面的例子以大家可能会经常用到的微信WX方法的调用。
首先我们新建一个Xamarin.Android工程。
这两个都是可以的,上次我们说到有关Xamarin.Form其实就是包含了Xamarin.Android这个工程。我在这里就创建了第一种方式,毕竟我要想着工程以后还要考虑到IOS的编写。
首先我们去官网下载WX的JAR包。https://mp.weixin.qq.com/。
下载完之后,把你需要的JAR加载到你的项目中来。
首先单击右键你的解决方案→添加→新建项目,然后添加Android绑定库,如图:
创建完成后,开打TestAndroid这个工程,里面有个JARS,单击右键→添加→现有项→然后选择你在微信官网下的文件找到一个以JAR结尾的文件添加进来就好了
添加进来之后,将TestAndroid工程重新编译,正常情况下应该是有两个错误和N个警告,警告不用去管他,这两个错误截图如下:
一般情况下引用进来的JAR文件都是会有很多命名冲突的错误,这里也不例外,有两个,然后我们把这两个命名换个名称就好了。
方法一:
在这里我们有两中方式可以解决,一个是直接点击到错误的地方直接更改,这个确实简单粗暴,很快就可以搞好,例如改一个如下:
我在这里把MediaObject直接改成MediaObject1,错误就消失了。
但是用这种方法有一个缺点,就是你在重新生成TestAndroid或者整个解决方案的时候会回到原点,又会出现这两个错误。
方法二:
打开TestAndroid绑定库中的Transforms,找到Metadata.xml并打开。
将选中的这段代码粘贴上去<attr path="/api/package[@name='com.tencent.mm.opensdk.modelmsg']/class[@name='WXMediaMessage']/field[@name='mediaObject']"
name="managedName">MyMediaObject</attr>
<attr path="/api/package[@name='com.tencent.mm.opensdk.modelbase']/class[@name='BaseResp']/field[@name='errCode']"
name="managedName">MyErrCode</attr>
这里的作用其实和方法一功能一样,将MediaObject和ErrCode重命名成自己想要的,这种方法有点就是将命名冲突的全都放在一个地方来进行处理。并且在你重新生成TestAndroid或者整个解决方案时,不会在报错了。
解释一下path="/api/package[@name='com.tencent.mm.opensdk.modelmsg']/class[@name='WXMediaMessage']/field[@name='mediaObject']"
这里其实就是你报错地方上面
// Metadata.xml XPath field reference: path="/api/package[@name='com.tencent.mm.opensdk.modelbase']/class[@name='BaseResp']/field[@name='errCode']"
也就是你需要修改路径。
好了以上都已经修改好了,我们现在就开始准备调用把。
首先我们来说一下怎么在Xamrin.android这个项目中调用,在下一次我将讲述如何在Xamarin.From*用代码来调用。
我们可以将以下三个毕竟常用的引用到我们需要调用WX方法的MainActivity中。
using Com.Tencent.MM.Opensdk.Openapi;
using Com.Tencent.MM.Opensdk.Modelbase;
using Com.Tencent.MM.Opensdk.Modelmsg;
然后就开始调用把
IWXAPI这个就是刚刚JAR中的方法了,好了,今天我们就说到这里了,如果不知道IWXAPI怎么调用,可以去微信的官网查看https://mp.weixin.qq.com/
我会经常跟新我的博客和他家分享一些我在开发中遇到的解决方法,希望大家多多关注。主要是针对一些新手,大神在此可以越过,不喜勿喷。
---恢复内容结束---
Xamarin.Form怎么调用原生方法的更多相关文章
-
ReactNative-JS 调用原生方法实例代码(转载)
第一步首先创建ReactNative 模块类继承ReactContextBaseJavaModule package com.mixture; import android.content.Con ...
-
简单实现RN调用原生方法(IOS)
在React Native中,一个“原生模块”就是一个实现了“RCTBridgeModule”协议的Objective-C类(个人理解RCTBridgeModule就是react与native之间的桥 ...
-
通过js调用android原生方法
有时候我们有这样一个需求,监听html中控件的一些事件.例如点击html中某个按钮,跳转到别的activity,复制某段文本. 首先是对webview的设置: myWebView = (WebView ...
-
uni-app&;H5&;Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
-
【React Native】在原生和React Native间通信(RN调用原生)
一.从React Native中调用原生方法(原生模块) 原生模块是JS中也可以使用的Objective-C类.一般来说这样的每一个模块的实例都是在每一次通过JS bridge通信时创建的.他们可以导 ...
-
angularjs 动态表单, 原生事件中调用angular方法
1. 原生事件中调用angular方法, 比如 input的onChange事件想调用angular里面定义的方法 - onChange="angular.element(this).sco ...
-
javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...
-
react native 调用Android原生方法
来源:https://www.youtube.com/watch?v=WmJpHHmOKM8 教程:https://www.youtube.com/watch?v=GiUo88TGebs Breaki ...
-
FlipView For Xamarin.Form 之 IOS
之前写过两篇博文 是关于 Android 和 Windows Phone 下的 FlipView 的实现. 上上周,有个印度佬通过 GitHub 找到我, 问我有没有打算个 ios 端的,还说比较了相 ...
随机推荐
-
.NET (一)委托第一讲:什么是委托
1.为什么要使用委托? 生活中的委托就是委托他人帮我们去办一件事情,程序中的委托类似.看下面的例子 class Class1 { static void Main(String[] args) { L ...
-
Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- Messenger
Messenger类实际是对Aidl方式的一层封装.本文只是对如何在Service中使用Messenger类实现与客户端的通信进行讲解,对Messenger的底层不做说明.阅读Android Prog ...
-
BZOJ3886 : [Usaco2015 Jan]Moovie Mooving
f[i]表示用i集合内的电影可以达到的最长时间 f[i]向f[i|(1<<j)]更新,此时的时间为第j部电影在f[i]前的最晚上映时间 先排序一遍离散化后用前缀最大值解决 时间复杂度$O( ...
-
Fragment中调用Activity的UI
1:Fragment内定义一个接口,或外部定义一个接口, 2:Fragment定义一个接口对象的属性 3:Activity实现这个接口 4:Fragment的onAttach方法中强转Activity ...
-
phpcms v9二级栏目生成到根目录后三级栏目无法访问的解决办法
这个栏目问题折腾了我一天多,可怜我这个美工又不会程序!!! 我的问题是: 我的栏目设置如下: 一级栏目[生成到根目录(是)]> 二级栏目[生成到根目录(是)] > 三级栏目[生成到根目录( ...
-
LIS
五:LIS 概念 最长上升子序列(Longest Increasing Subsequence,LIS),在计算机科学上是指一个序列中最长的单调递增的子序列.比如一个序列31 2 6 3 8,他的最长 ...
-
Netflix公司监控内部安全的开源项目
Netfix公司已经公布了三个内部工具,用于捕捉黑客在使用互联网服务时留下的痕迹. AndyHoernecke和Netflix公司的云安全团队成员ScottBehrens指出:"很多安全团队 ...
-
升级 树莓派的gcc/g++编译器到4.8
首先,更新你的树莓派(避免编译出来版本不对导致不能insert)sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade s ...
-
python2.x 与 python3.x的区别
从语言的源码角度: python2.x 的源码书写不够规范,且源码有重复,代码的复用率不高; python3.x 的源码清晰.优美.简单 从语言的特性角度: python2.x 默认为ASCII字符编 ...
-
【mybatis基础】mybatis开发dao两种方法
mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀的持久层的框架,是apache下的*项目.mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.mybat ...