- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只是在玩 Appcelerator 的 Titanium 平台来开发移动应用。
我的测试应用程序只是打开一个指向在线网页的 WebView 。本页uses the W3C Geolocation API获取用户的位置。
这是我的 tiapp.xml 特定的 android 权限:
<android xmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
</manifest>
</android>
这是我获取坐标的javascript代码:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
$("#results").append('Longitude: ' + position.coords.longitude + '<br/>');
$("#results").append('Latitude: ' + position.coords.latitude + '<br/>');
}, function(error){
$("#results").append('An error ocurred ' + error.message);
});
} else {
$("#results").append('Geolocation not supported');
}
navigator.geolocation 和 navigator.geolocation.getCurrentPosition 似乎已定义,但无论如何都不会执行委托(delegate)。
问题是:如何让它发挥作用? :-)
提前致谢。
更新: 我发现问题似乎是 Android 2.x webview 有它自己的 navigator.geolocation 实现。根据this commit关于 phonegap 的源代码。
更新 2: 我写了一个非常小的全原生 android 应用程序,它打开一个 webclient 到同一个网页并且工作正常:
package com.sourcerebels;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.GeolocationPermissions.Callback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
class MyClient extends WebChromeClient {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,
Callback callback) {
callback.invoke(origin, true, false);
}
}
public class TestWebClient extends Activity {
WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setGeolocationDatabasePath("/data/data/testWebClient");
webView.loadUrl("http://www.sourcerebels.com/index2.html");
webView.setWebChromeClient(new MyClient());
}
}
更新 3:我从 appcelerator 的 github 站点找到了这个来源:https://github.com/appcelerator/titanium_mobile/blob/master/android/modules/ui/src/ti/modules/titanium/ui/widget/webview/TiWebChromeClient.java
最佳答案
Titanium 最强大的方面是它是每个平台上的 native 代码。通过使用 webview,您可以大大避免原生代码的优势。
http://wiki.appcelerator.org/display/guides/Using+Location+services
http://wiki.appcelerator.org/display/guides/HTML5+vs+Native+UI
在标题为何时使用 HTML 的部分中声明如下:
“应尽可能避免使用 HTML。几乎所有您需要的东西都可以使用 native 代码完成。应用程序加载速度更快,对用户操作的 react 更快,从而带来更好的用户体验。”
按照这些标准,我建议您获取位置,然后创建或更新 WebView 。至于为什么 javascript 不工作,我没有答案,因为在创建 webview 时加载了完整的 DOM?
关于javascript - 如何使用 android webview 在 appcelerator 的 titanium 移动应用程序上进行地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933699/
在 Alloy 文档中,它提到您可以拥有一个集合的单例或实例。您可以使用实例标签定义一种或另一种方式: 我理解单例 vs 实例背后的一般思想....
如何为 Titanium 应用程序创建自动用户界面测试?该框架是否包含用于此的内容?有没有有用的第三方工具? 最佳答案 你看过titanium-jasmine? 我从来没有亲自使用过它,但我听说它对这
我使用以下代码在 Titanium 中绘制了一个圆。 var wheelTop = Ti.UI.createImageView({ width: 100, height
如何通过 Titanium 移动应用程序发送电子邮件。 我收到“本地主机被拒绝”的错误 最佳答案 我猜你用的是类似 mailto:email@mydomain.com 的东西. 您应该使用电子邮件对话
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, over
我使用的是 Titanium 3.1.3 GA 版本。 在项目中包含移动应用程序跟踪模块时,收到“构建失败”错误消息。 尝试新项目也遇到同样的错误。 [ERROR] : ** BUILD FAILE
是否有用于 Titanium 的 rails console 之类的东西,我可以在那里玩一点 API?或者更好的调试器? 或者您可以向我推荐一个不同的工作流程,而不必编辑源代码 > 编译 > Ti.A
我刚刚开始使用 Appcelerator 的钛合金。 如何为我的 添加样式 Controller /index.js 这是代码: var title = Titanium.UI.createLabel
我的团队在过去几个月一直在开发 Titanium,现在我们面临一个问题:当我们对 View 代码进行更改(更改其字体、背景或大小)时,需要很长时间(大约 1分钟),直到我们看到结果显示在设备上。这真是
我想为我正在使用 Titanium 框架开发的移动应用程序添加一个计时器。我在文档中没有找到任何相关的东西。任何人都可以为这个问题提出一个解决方案。 感谢 最佳答案 如果您是指稍后执行代码的计时器,只
下面是我的代码。它在 iPhone 上完美运行,但图像在 Android 上被拉伸(stretch),所以它没有显示标签。 var friendsButton = Titanium.UI.create
我在 tableview 中用图像和几个按钮自定义了一个 tableviewrow。我已经获得了我点击的行的索引,但我需要这样做,以便当我点击 tableviewrow 中的按钮时,它将返回该行的索引
我需要向我的用户添加照片,通过从网络界面执行此操作,我将照片设置为名为 photo 的字段,但如果我尝试以编程方式执行相同的操作移动应用程序不起作用。 photonativePath 是我的相机或图库
如何在钛合金中使用 Proguard 或者是否有任何类似的功能以使代码反编译更难实现?有什么建议吗? 最佳答案 我自己研究了一下,发现是可以做到的。然而,Appcelerator 的 jira 中有关
我正在将恢复事件附加到应用程序,我想检测当前聚焦的窗口 Ti.App.addEventListener('resume', function(e) { // what window is focu
我在 tableview 中用图像和几个按钮自定义了一个 tableviewrow。我已经获得了我点击的行的索引,但我需要这样做,以便当我点击 tableviewrow 中的按钮时,它将返回该行的索引
对于条形码扫描,有可用的模块,如 Redlaser , Scandit ..ETC。有没有从数字生成条形码的模块(反向过程)? 谢谢。 最佳答案 避免使用 main of modules 的好方法是,
我一直在使用此代码将图像从 imageviewer 存储到设备内存。 blobObj = imageView.toImage(); var f = Titanium.Filesystem.getFil
我是钛的新移动应用程序开发人员。我想看一行一行的调试。检查一些循环或代码。 (特别是“ANDROID”) 用于检查我的应用程序在哪里“崩溃”。请帮我, 提前致谢 最佳答案 您必须设置 切换中断 通过右
我正在尝试在我们的 iOS 13 及更高版本的应用中实现深色模式主题。我已点击此链接 Dark Mode in iOS 13 .但我面临一些问题。我附上了下面的示例代码。我期望如果我更改启用深色外观,
我是一名优秀的程序员,十分优秀!