如何写一个Andorid下自动更新的插件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何写一个Andorid下自动更新的插件相关的知识,希望对你有一定的参考价值。

参考技术A 插件类的编写
  
  原生Andorid中如果调用,就看上面说的他们自己写的文档。如果我们现在要在APP中【设置】中增加自动检查和显示当前版本,则需要我们开始学习如何编写cordova插件了。
  
  这里我们会编写一个插件,两个方法,一个方法用来检测更新,另一个方法用来获得当前APP的版本号。
  
  闲话不说了,直接来代码。
  

  public class GCAppPlugin extends CordovaPlugin

  @Override
  public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException
  if ("version".equals(action))
  version(callbackContext);
  return true;
  
  else if ("checkUpdate".equals(action))
  final Context mContext = this.cordova.getActivity();
  UmengUpdateAgent.setUpdateAutoPopup(false);
  UmengUpdateAgent.setUpdateListener(new UmengUpdateListener()
  @Override
  public void onUpdateReturned(int updateStatus, UpdateResponse updateInfo)
  switch (updateStatus)
  case UpdateStatus.Yes: // has update
  UmengUpdateAgent.showUpdateDialog(mContext, updateInfo);
  break;
  case UpdateStatus.No: // has no update
  Toast.makeText(mContext, "现在使用的已是最新版本了", Toast.LENGTH_SHORT).show();
  break;
  case UpdateStatus.NoneWifi: // none wifi
  Toast.makeText(mContext, "没有wifi连接, 只在wifi下更新", Toast.LENGTH_SHORT).show();
  break;
  case UpdateStatus.Timeout: // time out
  Toast.makeText(mContext, "超时", Toast.LENGTH_SHORT).show();
  break;
  
  
  );
  UmengUpdateAgent.forceUpdate(mContext);
  return true;
  
  

  private synchronized void version(CallbackContext callbackContext)
  PackageInfo packInfo;
  try
  packInfo = this.cordova.getActivity().getPackageManager().getPackageInfo(this.cordova.getActivity().getPackageName(),0);
  String version = packInfo.versionName +"("+packInfo.versionCode+")";
  callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, version));
   catch (NameNotFoundException e)
  // TODO Auto-generated catch block
  e.printStackTrace();
  
  

  javascript如何得到插件调用后的返回结果?主要通过类似 callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, version)); 代码返回PluginResult,失败和成功都可以触发Javascript执行对应的自定义函数
  
  插件的配置
  
  插件写完了,很多人遇到的下一个问题就是怎么配置才能在Javascript中调用呢?我们今天也不解析源码,为什么呢?因为我没看:)不过,我一定要给大家说清楚如何配置,否则就永远调用不了插件。
  
  打开res/xml/config.xml文件,添加feature,必须匹配类名,因为源码中是通过这些去配对的。上面我们写了更新插件,现在就是要配置一下这个插件类到功能名称,我在配置文件中加入了下文粗体部分内容
  

  <?xml version='1.0' encoding='utf-8'?>
  <widget id="com.glodon.gcapp" version="2.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>掌中广材</name>
  <description> 随时随地查找全国最完整最及时的信息价 </description>
  <author email="22626496@qq.com" href="http://www.中国信息价.cn"> 周金根 </author>
  <content src="html/scj/scj.html" />
  <access origin="*" />
  <access origin="tel:*" launch-external="yes"/>
  <access origin="geo:*" launch-external="yes"/>
  <access origin="mailto:*" launch-external="yes"/>
  <access origin="sms:*" launch-external="yes"/>
  <access origin="market:*" launch-external="yes"/>
  
  <preference name="SplashScreen" value="screen" />
  <preference name="SplashScreenDelay" value="30000" />
  <preference name="SplashMaintainAspectRatio" value="false" />
  <preference name="LoadingDialog" value="正在加载中..." />
  
  <feature name="Device">
  <param name="android-package" value="org.apache.cordova.device.Device" />
  </feature>
  <feature name="NetworkStatus">
  <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
  </feature>
  <feature name="SplashScreen">
  <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
  </feature>
  <feature name="Camera">
  <param name="android-package" value="org.apache.cordova.camera.CameraLauncher" />
  </feature>
  <feature name="BarcodeScanner">
  <param name="android-package" value="com.phonegap.plugins.barcodescanner.BarcodeScanner" />
  </feature>
  <feature name="Gcapp">
  <param name="android-package" value="com.gldjc.guangcaiclient.GCAppPlugin" />
  </feature>
  </widget>

学习如何写一个vue插件入门篇

#### 疑答
1、市面上已经有那么多插件可用,为什么还要造轮子?学习、借鉴思想、应用到开发
2、能否在项目中使用?与网上插件使用相同   更新维护问题怎么解决? 自身动力,使用者反馈等

#### 准备工具

1.官方文档https://cn.vuejs.org/v2/guide/plugins.html
2.github、npm网站账号、node/npm、git
3.代码工具:vscode

#### 过程
1.新建文件夹 vue-loading-text

   npm init 初始化

   

 

 

 

2.代码工具:vscode

 

#### 发布插件到npm

https://www.npmjs.com/

# login
npm login

# publish
npm publish --access public

技术图片

 

 

 

#### 阅读vant源码
  地址:https://github.com/youzan/vant

  推荐插件:Octotree

  

技术图片  

 

 

      

 

以上是关于如何写一个Andorid下自动更新的插件的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭 Mars Eclipse 中插件的自动更新检查?

怎么禁止chrome浏览器插件自动更新

如何关闭idea的版本自动更新

Delphi 求高手帮忙写自动更新程序

idea 怎样关闭svn自动更新

记录一些插件等信息(不断更新!)