我正在使用jQueryMobile构建一个phonegap android应用程序。
我想构建一个功能,通过web服务检查应用程序的版本代码,以便建议更新,如果应用程序已过时,则提示进入Google Play商店。
在我的搜索中,看起来PhoneGap没有找到版本代码的方法。
有办法吗?
或者,如果在课堂上写作是必不可少的,我该如何从PhoneGap中调用它?
编辑:我用一个有效的解决方案编辑了接受的答案!我希望每个人都能从中获利。
编辑(2):这里是带有说明的完整插件回购,随意分叉:) https://github.com/gcatalfamo/Version
答案 0 :(得分:5)
我知道你没有要求编写Java类,但是你需要编写一个或者另外一种方法。你需要像安德烈所说的那样写PhoneGap Plugin
。
创建自定义PhoneGap plugin
:
在应用包中创建一个新类:
package com.phonegap.plugins; //your package name
import org.json.JSONArray;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import org.apache.cordova.api.Plugin;
import org.apache.cordova.api.PluginResult;
import org.apache.cordova.api.PluginResult.Status;
public class Version extends Plugin {
public final String ACTION_GET_VERSION_NAME = "GetVersionName"; //not used in this version
public final String ACTION_GET_VERSION_CODE = "GetVersionCode";
@Override
public PluginResult execute(String action, JSONArray args, String callbackId) {
PluginResult result = new PluginResult(Status.INVALID_ACTION);
PackageManager packageManager = this.cordova.getActivity().getPackageManager();
if(action.equals(ACTION_GET_VERSION_CODE)) {
try {
PackageInfo packageInfo = packageManager.getPackageInfo(this.cordova.getContext().getPackageName(), 0);
result = new PluginResult(Status.OK, packageInfo.versionCode);
}
catch (NameNotFoundException nnfe) {
result = new PluginResult(Status.ERROR, nnfe.getMessage());
}
}
return result;
}
}
在plugins.xml中,添加以下行:
<plugin name="Version" value="your.package.Version" />
在deviceready
事件中添加以下代码:
var Version = function() {};
Version.prototype.getVersionCode = function(successCallback, failureCallback) {
return cordova.exec(successCallback, failureCallback, 'Version', 'GetVersionCode', []);
};
if(!window.plugins) {
window.plugins = {};
}
if (!window.plugins.version) {
window.plugins.version = new Version();
}
然后,您可以通过执行以下操作获取versionCode属性:
window.plugins.packageManager.getVersionCode(
function(versionCode) {
//do something with versionCode
},
function(errorMessage) {
//do something with errorMessage
}
);
答案 1 :(得分:0)
需要稍微更改..类应该扩展“扩展CordovaPlugin ”
然后“ this.cordova.getActivity()。getPackageName()”将起作用。
在plugins.xml中,添加以下行:
但是Cardova&gt; 2.0,您需要在 xml文件夹中添加 config.xml