bmob的自动升级报空指针

bmob自然是很好的东西,但是如果你遇到这个,

11-01 09:22:20.880: E/AndroidRuntime(8102): Caused by: java.lang.NullPointerException

11-01 09:22:20.880: E/AndroidRuntime(8102): at cn.bmob.v3.update.UpdateResponse.Code(SourceFile:134)

但是你有没有什么好的解决思路,不如仅仅只是把AppVersion当做一个普通数据,自己做版本对比,利用BmobFile类的下载方法,下载好后自己去安装就好了。

				private void testUpdate() {
<span style="white-space:pre">		</span>PackageManager manager;
<span style="white-space:pre">		</span>PackageInfo info = null;
<span style="white-space:pre">		</span>manager = this.getPackageManager();
<span style="white-space:pre">		</span>try {
<span style="white-space:pre">			</span>info = manager.getPackageInfo(this.getPackageName(), 0);
<span style="white-space:pre">		</span>} catch (Exception e) {
<span style="white-space:pre">			</span>Log.e(TAG, e.getMessage());
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>BmobQuery<AppVersion> query = new BmobQuery<AppVersion>();
<span style="white-space:pre">		</span>query.addWhereGreaterThan("version_i", info.versionCode);
<span style="white-space:pre">		</span>query.findObjects(this, new FindListener<AppVersion>() {


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void onError(int arg0, String arg1) {
<span style="white-space:pre">				</span>// TODO Auto-generated method stub


<span style="white-space:pre">			</span>}


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void onSuccess(List<AppVersion> arg0) {
<span style="white-space:pre">				</span>AppVersion av = arg0.get(0);
<span style="white-space:pre">				</span>BmobFile file = av.getPath();
<span style="white-space:pre">				</span>LogUtil.e(TAG, file.getFilename());
<span style="white-space:pre">				</span>file.download(LauncherActivity.this,new File("/mnt/sdcard/xxx.apk"),
<span style="white-space:pre">						</span>new DownloadFileListener() {


<span style="white-space:pre">							</span>@Override
<span style="white-space:pre">							</span>public void onFailure(int arg0, String arg1) {
<span style="white-space:pre">								</span>LogUtil.e(TAG, "新版本下载失败:"+arg1);
<span style="white-space:pre">							</span>}


<span style="white-space:pre">							</span>@Override
<span style="white-space:pre">							</span>public void onSuccess(String arg0) {
<span style="white-space:pre">								</span>LogUtil.e(TAG, arg0);
<span style="white-space:pre">								</span>installApk();
<span style="white-space:pre">							</span>}


<span style="white-space:pre">						</span>});
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>});
<span style="white-space:pre">		</span>
<span style="white-space:pre">	</span>}

private void installApk() {
		String fileName = "/mnt/sdcard/xxx.apk"; 
		Intent intent = new Intent(Intent.ACTION_VIEW); 
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//		 intent.setDataAndType(Uri.parse("file://"+fileName), "application/vnd.android.package-archive"); 
		intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive"); 
		startActivityForResult(intent, 1);
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值