有米Android SDK开发者文档( 九 )


四、实用功能1.检查更新接口 (可选)
有米广告SDK提供应用版本检查更新接口,您可以在应用中调用提示用户升级 。
通过在有米主站上传应用的新版本通过审核后,使用有米广告SDK的应用版本检查更新接口就可以获得更新信息,它包括更新提示和下载地址,这样您可以进行下一步的操作,如向用户提示更新以及下载安装新版本 。
接口:
...import net.youmi.android.AdManagerimport net.youmi.android.dev.AppUpdateInfoimport net.youmi.android.dev.CheckAppUpdateCallBack;...//通过调用AdManager的syncCheckAppUpdate或asyncCheckAppUpdate接口即可检查更新 。//返回值AppUpdateInfo包含了更新提示以及下载地址,如果结果为null则表示当前已经是最新版本,无需下一步操作////1.同步调用方法:AppUpdateInfo updateInfo=AdManager.getInstance(this).syncCheckAppUpdate();//注意,此方法务必在非UI线程调用,否则有可能不成功 。////2.异步调用方法AdManager.getInstance(this).asyncCheckAppUpdate(callback); //注意,此方法可以在任意线程中调用 。////当updateInfo不为null时,请自行处理提示及下载安装流程 。...
示例(同步接口,必须在非UI线程中调用,示例使用了):
import net.youmi.android.AdManager;import net.youmi.android.dev.AppUpdateInfo;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.Uri;import android.os.AsyncTask;/**这里示例一个调用更新应用接口的工具类,由开发者自定义,继承自AsyncTask **/public class UpdateHelper extends AsyncTask {private Context mContext; public UpdateHelper(Context context) {mContext = context;}@Overrideprotected AppUpdateInfo doInBackground(Void... params) { try {//在doInBackground中调用AdManager的checkAppUpdate即可从有米服务器获得应用更新信息 。return AdManager.getInstance(mContext).syncCheckAppUpdate();//此方法务必在非UI线程调用,否则有可能不成功 。} catch (Throwable e) {// TODO: handle exceptione.printStackTrace();}return null;}@Overrideprotected void onPostExecute(AppUpdateInfo result) {super.onPostExecute(result);try {if (result == null || result.getUrl() == null) {//如果AppUpdateInfo为null或它的url属性为null,则可以判断为没有新版本 。Toast.makeText(this, "当前版本已经是最新版", Toast.LENGTH_SHORT).show();return;} //这里简单示例使用一个对话框来显示更新信息new AlertDialog.Builder(mContext).setTitle("发现新版本").setMessage(result.getUpdateTips())//这里是版本更新信息.setNegativeButton("马上升级",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(result.getUrl())); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent);//ps:这里示例点击"马上升级"按钮之后简单地调用系统浏览器进行新版本的下载,//但强烈建议开发者实现自己的下载管理流程,这样可以获得更好的用户体验 。}}).setPositiveButton("下次再说",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) { dialog.cancel();}}).create().show(); } catch (Throwable e) { e.printStackTrace();}}}
示例(异步接口,可在任意线程使用):
import net.youmi.android.AdManager;import net.youmi.android.dev.AppUpdateInfo;import net.youmi.android.dev.CheckAppUpdateCallBack;import android.content.Context;import android.app.Activity import android.content.Intent;import android.net.Uri; /**这里示例一个Activity调用**/public class UpdateActivity extends Activity implements CheckAppUpdateCallBack{ @Overrideprotected void onCreate(Bundle savedInstanceState){//调用检查更新接口,这里可以在UI线程调用,也可以在非UI线程调用 。AdManager.getInstance(this).asyncCheckAppUpdate(this);}@Override public void onCheckAppUpdateFinish(AppUpdateInfo updateInfo) {//检查更新回调,注意,这里是在UI线程回调的,因此您可以直接与UI交互,但不可以进行长时间的操作(如在这里访问网络是不允许的)if(updateInfo==null){//当前已经是最新版本}else{//有更新信息}}}