Unity3D研究院之IOS&Andoird使用Sharesdk遇到的坑

http://www.xuanyusong.com/?p=2620&preview=true


大部分内容它的文档上已经说的很清楚了。

http://wiki.sharesdk.cn/Unity3D%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97

这里我直说文档上没说的部分。

分享图片的时候 它的例子写的是 网络图片。

content["image"] = “http://img.baidu.com/img/image/zhenrenmeinv0207.jpg”;

但是实际游戏里一般的需求是 分享一张本地图片,或者分享一张截屏后的图片。

先说我遇到的坑,我把图片放在 StreamingAssets文件夹下面,写入下面的代码。

content["image"] = Application.streamingAssetsPath+”/Share.png”;

打包在IOS上,分享微博,微信朋友圈都没问题。但是我在切换到android平台,这样的方法死活就会报错。理论上StreamingAssets 是一个应用程序只读的文件夹,技术上完全可以做到的,不知道为什么sharesdk做不到。后来我咨询了一个他们的技术。他给我的答案是:

Unity3D研究院之IOS&Andoird使用Sharesdk遇到的坑 - 雨松MOMO程序研究院 - 1

既然原因知道了,那么就好办了,我需要在分享前把u3d里的图片拷贝到sdcard卡里面。

在Resources文件夹下放一个图片记住一定要PNG,在U3D里面把图片的格式修改成RGBA。

 这样在分享图片的时候

 这里再说一下,如果你想分享的是一张截屏图片,路径这样来写。

 

 为了让安卓和iPhone的通用性,所以我只能把Resources一张需要分享的图片拷贝到Application.persistentDataPath 路径下面。

 如下图所示, 微博 朋友圈都分享成功了,朋友圈的图我就不截了。

Unity3D研究院之IOS&Andoird使用Sharesdk遇到的坑 - 雨松MOMO程序研究院 - 2

下面上完整代码  另外 appid和 appkey我都用了sharesdk自带的,最好自己申请一下。

 

 最后我在上u3d工程的包 ,已经在IOS和Android上测试通过。

http://vdisk.weibo.com/s/qDm4IY-bo7eu

 6月6日补充 

这个例子前段时间做完了,因为我策划还没有确定完需求,所以一直没再项目上加这个东西。 今天加到我游戏里面才发现,真的是问题多多呀。。

主要是微信,安卓到没什么问题。

你必须要在ShareSDK上注册一个号 http://sharesdk.cn/ 然后创建你的游戏,分成安卓和IOS。

 xxxxxx就是你申请的ID,如果你不申请ID的话就只能用它的默认ID,即时你配了你自己申请的微信的APPID 那么还是会报错 :warning: 尚未配置微信URL Scheme:wx4868b35061f87885, 无法进行分享。 所以一定要在ShareSdk的官网上注册你自己的游戏。

还有就是我用微信分享,无论我点击分享或者点击取消分享。ShardSdk永远都给我返回一个 Cancel的状态,那么我就没办法获取用户是否分享成功的事件。。 我咨询了一下它们的客服。。他告诉我:

 

这样问题就来了,因为 AppController.mm文件 是Unity自动生成的,我不能随意修改因为他会打断我写的自动化批量打包工具。。

建议大家使用XUPorter 这样的话可以打完包以后自己用代码上面的代码写在AppController.mm里面。


<think>好的,用户问的是在Android的XML文件中如何使用双引号。首先,我需要回想一下XML的语法规范。XML中属性值可以用单引号或双引号包裹,但有时候用户可能需要在字符串中包含双引号本身,这时候就需要转义处理。 比如,如果一个字符串属性里面本身有双引号,直接写进去会导致XML解析错误。比如<TextView android:text="He said "Hello"" />这样写是不对的,因为中间的双引号会打断属性值的闭合。这时候应该用转义字符,或者换用单引号包裹整个属性值。 但用户的问题可能更具体,比如在XML中如何正确使用双引号作为字符串的一部分,或者是否可以在属性值中使用双引号而不需要转义。需要明确回答用户如何正确地在XML中使用双引号,包括转义的方法和替代方案。 接下来要考虑Android中常见的场景,比如在字符串资源文件(strings.xml)里使用双引号,或者在布局文件的属性值中使用。例如,在strings.xml中,如果字符串包含双引号,可以使用"实体来转义。或者在布局文件中,如果属性值用双引号包裹,内部的双引号需要用反斜杠转义或者用单引号代替。 另外,用户可能遇到的问题是,在XML属性中直接输入双引号导致语法错误,这时候正确的做法是使用转义字符\",或者将属性值的外层引号改为单引号,这样内部的双引号就不需要转义了。例如,android:text='He said "Hello"',这样更简洁。 还要检查Android的文档是否有特殊要求,比如某些版本是否支持不同的转义方式。但通常来说,标准的XML处理方式应该适用。 总结回答的结构:首先说明在XML中使用双引号的两种主要情况,即属性值中的双引号作为字符串内容,以及如何转义。然后给出具体的例子,包括使用转义字符和实体,以及替换外层引号的方法。最后提供相关问题,帮助用户进一步理解。</think>在 Android 的 XML 文件中,双引号(`"`)作为属性值的分隔符时,**若字符串本身需要包含双引号**,需通过以下两种方式处理: --- ### **1. 使用转义字符 `"`** 在 XML 中,直接使用双引号会导致解析错误,因此需用 `"` 表示字符串中的双引号。例如: ```xml <string name="example">He said "Hello"</string> ``` 最终显示效果:`He said "Hello"` --- ### **2. 外层使用单引号包裹属性值** 若字符串中包含双引号,可直接用单引号包裹属性值,避免转义: ```xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text='He said "Hello"' /> ``` 效果:`He said "Hello"` --- ### **3. 动态拼接字符串(代码中处理)** 若需在代码中拼接双引号,可使用字符串拼接或格式化: ```kotlin val text = "He said \"Hello\"" textView.text = text ``` 或通过 `String.format`: ```kotlin val formatted = String.format("He said \"%s\"", "Hello") ``` --- ### **注意事项** - **XML 语法限制**: XML 的属性值必须用引号(单引号或双引号)包裹,且引号需成对匹配。 错误示例:`android:text="He said "Hello""`(未转义会导致解析失败)。 - **字符串资源文件(`strings.xml`)**: 在 `res/values/strings.xml` 中定义带双引号的字符串时,必须使用 `"` 转义: ```xml <string name="quote">This is a "quote"</string> ``` - **HTML 标签中使用双引号**: 若在富文本中使用 `Html.fromHtml()`,需确保 HTML 字符串正确转义: ```kotlin val htmlText = Html.fromHtml("This is a "quote"") ``` --- ### **示例场景** #### 场景 1:布局文件中直接使用双引号 ```xml <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/click_me" /> ``` 对应的 `strings.xml`: ```xml <string name="click_me">Click "OK"</string> ``` #### 场景 2:动态设置带双引号的文本 ```kotlin val message = "The value is \"100\"" textView.text = message ``` --- ### **相关问题** 1. 如何在 XML 中显示带单引号的字符串? 2. 怎样在字符串资源中使用换行符? 3. 如何在 HTML 富文本中正确显示特殊字符? 4. XML 属性值中能否同时使用单引号和双引号? 5. 如何避免字符串拼接导致的语法错误?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值