一、缺少res导致不能升级的问题
由于缺少了解,官网文档也没用提醒,仅仅拷贝了SDK的jar到工程里,一直不知道到底升级功能是否已经实现,关键是也不报错!今天又拿出来测试了一下,监听了一下UmengUpdateListener接口,发现客户端已经检测到了更新,但是没用弹出更新的对话框,然后就注意到了如下log:
W/ResourceType(7881): No known package when getting value for resource number 0xffffffff
虽然没用显示和umeng有关系,还是重新更新了一下jar,并且反编译了一下jar查看了一下代码,并检查了一下sdk,果然发现少拷贝了资源文件,res下还有drawable、layout、string还有东西,拷贝进项目即可!吐槽一下,好丑 - - # ,然后就有了下面:
二、自定义升级对话框
/*
* 版本检测
*/
private
void checkVersion() {
UmengUpdateAgent.setUpdateOnlyWifi(
true);
UmengUpdateAgent.setUpdateAutoPopup(
false);
UmengUpdateAgent.setUpdateListener(
new UmengUpdateListener() {
@Override
public
void onUpdateReturned(
int updateStatus,
UpdateResponse updateInfo) {
if (updateStatus ==
0 && updateInfo !=
null) {
showUpdateDialog(updateInfo.path, updateInfo.updateLog);
}
//
case 0:
//
has update
//
case 1:
//
has no update
//
case 2:
//
none wifi
//
case 3:
//
time out
}
});
UmengUpdateAgent.update(
this);
}
private
void showUpdateDialog(final String downloadUrl, final String message) {
AlertDialog.Builder updateAlertDialog =
new AlertDialog.Builder(
this);
updateAlertDialog.setIcon(R.drawable.app_icon);
updateAlertDialog.setTitle(R.
string.app_name);
updateAlertDialog.setMessage(getString(R.
string.update_hint, message));
updateAlertDialog.setNegativeButton(R.
string.update_ok,
new DialogInterface.OnClickListener() {
@Override
public
void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
try {
startActivity(
new Intent(Intent.ACTION_VIEW, Uri
.parse(downloadUrl)));
}
catch (Exception ex) {
}
}
}).setPositiveButton(R.
string.dialog_no,
null);
if (!isFinishing())
updateAlertDialog.show();
}
三、参考
官网文档:http://dev.umeng.com/doc/document_update_android.html
本文转自博客园农民伯伯的博客,原文链接:【Android】友盟的自动更新组件,如需转载请自行联系原博主。