Articles of cordova

扩展Phonegap应用程序的不同Android屏幕尺寸/密度?

我有一个Phonegap应用程序,旨在运行Android手机和平板电脑。 文字和图像的比例在手机上看起来不错,但在7英寸的平板电脑上太小了。 有没有一种方法来设置不同的屏幕尺寸/密度,适用于基于Phonegap的应用程序的规模? 对于原生的Android应用程序,多个屏幕布局(如在Android文档中提到的)将是一个解决scheme,但是这可以用于基于Phonegap的应用程序吗? 我可以使用CSS媒体查询设置基于屏幕大小的字体大小,但我想按比例缩放整个界面(包括图像)。 我尝试使用CSS zoom属性以及媒体查询来定位特定的屏幕大小,但是这样会导致绝对定位并干扰iScroll等UI元素的function: @media only screen and (min-device-width : 768px) { body{ zoom: 125%; } } @media only screen and (min-device-width : 1024px){ body{ zoom: 150%; } } 我也尝试使用targetdensity-dpi meta viewport属性 – 将其调整为120dpi,使得7英寸平板电脑上的比例尺更好,但手机上的比例太大。 由于这是用HTML而不是CSS进行硬编码的,媒体查询不能用来根据屏幕大小来改变它: <meta name="viewport" content="width=device-width, initial-scale=1, targetdensity-dpi=120dpi"> 以下是一个testing用例Phonegap应用程序的截图: HTC HD2,目标密度=默认 HTC HD2,目标密度= 120dpi Nexus 7,目标密度=默认 Nexus 7,目标密度= 120dpi

Phonegap应用程序的Android远程debugging不起作用

您好我正在尝试通过Chrome在我的设备上debugging我的phonegap应用程序我已按照所有步骤和我的手机被adb设备命令识别, 然后我去chrome:// inspect /#devices,我可以看到我的手机,但是这个信息出现在浏览器上: 离线 0019C9AD7EF31F 待validation:请接受设备上的debugging会话。 问题是我的手机中没有这样的信息,我有一个Sansumg Galaxy S2与kitkat。 我更新版本从4.1到4.4,因为我认为这是问题,但升级到4.4后,同样的问题。 有没有人遇到过这个问题?

我怎样才能加载网页内的电话网页视图?

我希望能够链接到phonegap webview内的网页,在相同的phonegap webview中加载外部网页。 如果我这样做,它会加载到webview中: public class App extends DroidGap { @Override public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("http://google.com"); } } 不过,我想先启动一个内部页面,并连接到外部页面,所以我这样做: public class App extends DroidGap { @Override public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/www/index.html"); } } 我有一个链接: <a href="#" onclick="navigator.app.loadUrl('http://google.com')">Google</a> 但是这个链接在应用程序之外的web浏览器中,而不是在电话webview中启动谷歌。 我能做些什么来确保在应用程序的phonegap webview中启动到外部页面的链接?

相对定位的元素在可滚动的绝对定位的div“滞后”滚动

我有一个PhoneGap应用程序,显示一个很长的文本,包含我在Android上testing的标题,表格和图像。 一切工作正常,除了具有风格position:relative的元素position:relative这些元素在“滚动”时滞后,这意味着如果我滚动页面,那么这些元素在大约四分之一秒后开始和结束滚动。 当一个绝对div与相对的孩子和一个孩子的overflow:auto 。 删除任何这些东西修复了错误,但我宁愿留下它。虽然我愿意删除表,并单独显示(如在对话框中),如果我必须。 该错误只出现在标准的Android浏览器(当然我的PhoneGap应用程序)。 到目前为止,我已经使用以下设备进行了testing: 三星Galaxy Nexus(4.1.1) 三星Galaxy S III(4.1.2) 任何帮助表示赞赏,但我更喜欢一个HTML和function没有改变(或不太多)的解决scheme。 我创build了一个显示错误的最小例子 。 只需在Android上打开它并开始滚动,您应该立即看到问题: <!doctype html> <html> <head><meta name="viewport" content="initial-scale=1.0"></head> <body style="margin:0"> <div style="position:absolute;overflow:auto;top:100px;bottom:100px;width:100%"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a quam arcu. Duis ultrices mollis nibh ut hendrerit. Etiam a interdum metus. Integer volutpat, nibh laoreet euismod suscipit, libero […]

如何让cordova InAppBrowser为用户提供一种在使用Android设备时closures浏览器的方式?

我正在使用cordova InAppBrowser在我的应用程序中显示来自外部网站的内容。 当我在iPhone上打开浏览器时,InAppBrowser底部有一些button用于closures或前后导航。 在Android设备上的InAppBrowser没有这样的button,并没有明显的方式让用户closures浏览器。 我知道如何以编程方式closuresInAppBrowser,但用户在使用Android设备时如何closures它? 我知道用户可以点击硬件返回button来closures浏览器,但是(1)这不是直观的 – 后退button通常意味着“返回一页”,并且(2)我最终希望改变返回button返回在InAppBrowser内显示的网站内的页面,而不是closures浏览器。

Cordova 1.9.0和Android Jelly Bean无法编辑inputtypes=“文本”或textarea

我刚刚得到了我的shiny的新的Nexus 7,并与cordova(Phonegap)玩耍。 我创build了一个简单的页面,有几个文本input字段和一个文本区域。 在我的iPhone上,我可以点击文本字段,键盘出现,我可以编辑文本。 在运行4.1.1 Jelly Bean和Cordova 1.9.0的Nexus 7上,键盘出现,但是在文本框或文本框中没有input任何内容。 我很确定我的代码很好,因为它在iPhone和Android 2.3.5上工作,但这里是问题的片段,以防万一: <body onload="onBodyLoad()"> <div data-role="page" id="mainpage"> <div data-role="header" data-theme="a"> <h2>Lightweight</h2> </div> <div data-role="content"> <div> <a href="#" data-role="button" data-icon="check" data-iconpos="bottom" data-theme="b" onClick=onClickInterrogate()>Interrogate</a> </div> <div align="center"> <a href="#" data-role="button" data-inline="true" data-icon="forward" data-theme="b" onClick=downloadFile()>Send</a> <a href="#" data-role="button" data-inline="true" data-icon="gear" data-iconpos="right" data-theme="b" onClick=onClickSettings()>Settings</a> </div> <div align="center"> <label for="serverUrl">Server URL:</label> […]

Phonegap – 从图库中select图片

任何人都可以告诉我,或者指向我如何从phonegap / Android的手机图像库中获取图像的方向? 有文件访问相机(这是伟大的),但不select现有的图像。 我正在寻找Phonegap / Javascript而不是Java。 提前致谢!

Apache Cordova(PhoneGap)中的资源结构并从文件系统加载文件

我们有一个相当复杂的JS Web应用程序,在浏览器中以不同的方式(string,数组缓冲区,base64,二进制)加载不同的资源(HTML模板,额外的JS / CSS文件,JSON数据,图像,video,声音)写作)。 现在,我们希望对其进行更改,以便在不同平台上将所有内容(包括资源)都作为Cordova移动应用程序工作。 问题#1 – 从本地文件系统加载文件 现在,由于Android正在向Chrome内部过渡,因此XHR请求本地文件://资源在任何地方都可以正常工作, 而现在Chrome已经成为一个阻碍。 好的,还剩下两个选项: 使用脚本标签,使用iframes的HTML伪造所有JSONP内容 – 这不是一个非常好的select,因为它需要对资源本身进行更改+它的一种黑客行为,它花费我们很多的function(string加载仅用于JS / HTML,arrayBuffer,二进制等) 使用File API 简单的香草文件API不幸的是总是 需要用户交互 (就像在input框上单击)来获取文件引用,再加上IE10是一个禁忌。 好的,那么唯一的select就是使用PhoneGap的自定义File API插件 – 这给我们带来了下一个问题。 问题#2 – PhoneGap中的(跨平台?)文件path 我喜欢PhoneGap CLI – 您可以在terminal中input几个命令,并为您pipe理不同平台的文件和构build。 还是呢? 据我可以告诉根据PhoneGap你应该把所有的东西都放在WWW文件夹 – 然而(一旦你build立应用程序),疯狂的事情是 – 有没有简单的方法来读取这些文件(通过文件API插件) PhoneGap从哪里放置它们。 你会认为fileSystem.root (LocalFileSystem)指向该文件夹,但至less在iOS上WWW文件夹是在你的应用程序中,但fileSystem.root引用指向一个外部的Documents文件夹(仍然必须在Android上进行testing但我猜再次有不同的东西)。 经过一番修改后,我想出了如何到达WWW文件夹,但它的灵活性,哈克,感觉就像不应该工作(iOS只在此刻): window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ fileSystem.root.getDirectory("../HelloWorld.app/www", {create: true}, function(entry) { entry.getFile("test.json", {create: false}, function(fileEntry) { […]

EXTRA_PREVIOUS_SCAN_MODE总是返回Android蓝牙的错误

当设备的蓝牙扫描模式改变(即可发现/不可发现)时,我正在使用以下代码将对象返回给Cordova。 cordova.getActivity().getApplicationContext().registerReceiver(new BroadcastReceiver(){ @Override public void onReceive(Context c,Intent intent){ JSONObject json=new JSONObject(); try{ json.put("current",intent.getIntExtra(BluetoothAdapter.EXTRA_SCAN_MODE,BluetoothAdapter.ERROR)); json.put("previous",intent.getIntExtra(BluetoothAdapter.EXTRA_PREVIOUS_SCAN_MODE,BluetoothAdapter.ERROR)); }catch(JSONException e){ } PluginResult result=new PluginResult(PluginResult.Status.OK,json); result.setKeepCallback(true); discoverableCallback.sendPluginResult(result); // discoverableCallback is a callbackContext } },new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED)); 但是, intent.getIntExtra(BluetoothAdapter.EXTRA_PREVIOUS_SCAN_MODE,BluetoothAdapter.ERROR)始终是BluetoothAdapter.ERROR 。 我试着连续几次设置可发现性,总是使用BluetoothAdapter.ERROR 。 我如何让它返回以前的扫描模式?

如何将android添加到cordova平台? PATH错误?

我正在尝试添加android作为cordova平台,以便我可以使用phonegap构build应用程序。 当我试图添加Android如此: $ cordova platform add android 我收到了这个错误信息: [错误:命令android失败。 确保你已经安装了最新的Android SDK,并且将android命令(在tools /文件夹内)添加到你的path中。 输出:/ bin / sh:未findandroid:命令] 我有最新的Android SDK安装,所以我想我需要添加Android到我的path。 我已经search了如何做到这一点,并search这个论坛,但我对命令行使用知之甚less,我不明白的答案。 如果有人可以提供非常简单的步骤来添加Android到我的path,我将不胜感激。