讯飞自动更新封装

友盟自动更新关闭了,公司不想自己做一个更新系统,各种精挑细选下,我选择了讯飞,并封装了一下

必需的,要申请个讯飞账号,创建个应用,开通自动更新服务,这些不详谈,以下记录如何使用

1:添加讯飞更新jar包,manifast文件添加以下代码

        <!-- autoupdate start -->
         <meta-data android:name="IFLYTEK_APPKEY" android:value="5786f55b"/> 
          <meta-data android:name="IFLYTEK_CHANNEL" android:value="pda"/>
		 <activity android:name="com.iflytek.autoupdate.IFlytekUpdateDialog"
            android:configChanges="keyboard|keyboardHidden|orientation"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:windowSoftInputMode="stateAlwaysHidden" 
            ></activity>
		<service android:name="com.iflytek.autoupdate.IFlytekDownloadService"/>
        <!-- autoupdate end -->
		
2:添加弹出框布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#60000000"
     >
     
    <LinearLayout 
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerInParent="true"
        >
        
        <RelativeLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#e9eaed"
            android:padding="7dp"
            >
            
            <ImageView 
                android:id="@+id/update_image"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_centerVertical="true"
                android:layout_marginLeft="5dp"
                android:contentDescription="@string/app_name"
                android:src="@drawable/more_about"
                />
            
            <TextView 
                android:id="@+id/iflytek_update_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/update_image"
                android:layout_centerVertical="true"
                android:textAppearance="?android:attr/textAppearanceMediumInverse"
                android:textColor="#494c53"
                android:layout_marginLeft="10dp"
                />
        </RelativeLayout>
        
        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:padding="10dp"
            android:background="#FFFFFF"
             >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/iflytek_update_content"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="10dp"
                	android:textAppearance="?android:attr/textAppearanceMedium"
                    android:focusable="true"
                    android:textColor="#62656d" />
            </LinearLayout>
        </ScrollView>
        
        <!-- Ok & Cancel  Buttom -->
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:background="#FFFFFF"
            android:padding="10dp"
            >
            
            <LinearLayout
	            android:layout_height="fill_parent"
	            android:layout_width="0dp"
	            android:layout_weight="1"
	            android:background="#bebfc2"
	            android:layout_marginLeft="10dp"
	            android:layout_marginRight="7dp"
	             >
                
                <RelativeLayout 
                    android:id="@+id/ifltek_cancel"
		            android:layout_height="fill_parent"
		            android:layout_width="fill_parent"
		            android:background="#FFFFFF"
		            android:layout_margin="0.5dp"
                    >
                    <TextView 
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:text="取消"
                        android:textAppearance="?android:attr/textAppearanceMediumInverse"
                        android:textColor="#494c53"
                        android:paddingTop="5dp"
                        android:paddingBottom="5dp"
                        />
                </RelativeLayout>
                
            </LinearLayout>
            
            <LinearLayout
	            android:layout_height="fill_parent"
	            android:layout_width="0dp"
	            android:layout_weight="1"
	            android:background="#3072bc"
	            android:layout_marginRight="10dp"
	            android:layout_marginLeft="7dp"
	             >
                
                <RelativeLayout 
                    android:id="@+id/ifltek_sure"
		            android:layout_height="fill_parent"
		            android:layout_width="fill_parent"
		            android:background="#549ae7"
		            android:layout_margin="0.5dp"
                    >
                    <TextView 
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:text="确定"
                        android:textAppearance="?android:attr/textAppearanceMediumInverse"
                        android:textColor="#FFFFFF"
                        android:paddingTop="5dp"
                        android:paddingBottom="5dp"
                        />
                </RelativeLayout>
                
            </LinearLayout>
            
        </LinearLayout>
        
    </LinearLayout>
    
    

</RelativeLayout>
3:添加封装好的工具类

<pre name="code" class="java">/**
 * 
 */

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.widget.Toast;

import com.iflytek.autoupdate.IFlytekUpdate;
import com.iflytek.autoupdate.IFlytekUpdateListener;
import com.iflytek.autoupdate.UpdateConstants;
import com.iflytek.autoupdate.UpdateErrorCode;
import com.iflytek.autoupdate.UpdateInfo;
import com.iflytek.autoupdate.UpdateType;

/**
 * @author lianwanfei
 *用于自动更新功能
 */
public class UpdateUtils {

	private IFlytekUpdate updManager;
	private Toast mToast;
	private  Context context;
	/**
	 * 
	 */
	public UpdateUtils(Context context) {
		// TODO Auto-generated constructor stub
		this.context=context;
		init();
	}
	private void init(){
		mToast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
		updManager = IFlytekUpdate.getInstance(context);
		updManager.setDebugMode(true);
		updManager.setParameter(UpdateConstants.EXTRA_WIFIONLY, "true");
		updManager.setParameter(UpdateConstants.EXTRA_STYLE, UpdateConstants.UPDATE_UI_DIALOG);
	}
	/**
	 * 如果是主动请求(如更多界面),则initiatively传入true
	 * @param initiatively
	 */
	public void update(boolean initiatively){
		if(initiatively)
			updManager.autoUpdate(context, updateListener);
		else
			updManager.autoUpdate(context, null);
	}
	
	//升级版本
	private IFlytekUpdateListener updateListener = new IFlytekUpdateListener() {
		
		@Override
		public void onResult(int errorcode, UpdateInfo result) {
			
			if(errorcode == UpdateErrorCode.OK && result!= null) {
				if(result.getUpdateType() == UpdateType.NoNeed) {
					//取得当前版本
					PackageManager packageManager = context.getPackageManager();
			        PackageInfo packInfo;
			        String mVersion="";
					try {
						packInfo = packageManager.getPackageInfo(context.getPackageName(),0);
						mVersion = packInfo.versionName;
					} catch (NameNotFoundException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					showTip("当前版本为:"+mVersion+",已经是最新版本!");
					return;
				}
				updManager.showUpdateInfo(context, result);
			}
			else
			{
				showTip("请求更新失败!\n更新错误码:" + errorcode);
			}
		}
	};	
	
	private void showTip(final String str) {
			mToast.setText(str);
			mToast.show();
		}
}

 

 
 4:使用相当简单 

UpdateUtils.getInstance(getApplication()).update(true);//若需要反馈是否为最新版本则传入true,不需要则传false
注意,这里要用getApplication(),不然会引起内存泄漏哦。











  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值