/**
* 查詢手機安裝的應用
* * @param context
* @return */
packagemanager pmanager = context.getpackagemanager();
listpaklist = pmanager.getinstalledpackages(0);
for (int i = 0; i < paklist.size(); i++) }}
/*** 判斷是否安裝過此應用
* * @param context 上下文
* @param packagename 應用的包名 清單檔案
*
* @return*/
packageinfo pa = null;
for (int i = 0; i < packages.size(); i++)
}return false;}
/* 解除安裝
* packagename 應用的包名 清單檔案
* * */
public static void uninstallapk(context context, string packagename)
//得到當前應用的versionname versioncode
private string getversionname(context context) catch (namenotfoundexception e)
return versionname;}
操作步驟:
1.首先判斷是否安裝過應用
2.如果安裝過應用,就解除安裝
private void
getupate
()});
builder.setpositivebutton("馬上跟新", new alertdialog.onclicklistener()
});builder.show();}
public class downloadservice extends service
};};
public ibinder onbind(intent arg0)
@override
public int onstartcommand(intent intent, int flags, int startid) else
}return super.onstartcommand(intent, flags, startid);
}/**
* 初始化子執行緒
* @author dong**/
class initthread extends thread
public void run()
if(length <= 0)
file dir = new file(download_path);
if(!dir.exists())
filename = this.url.substring(this.url.lastindexof("/")+1, this.url.length());
if(filename==null && textutils.isempty(filename) && !filename.contains(".apk"))
file file = new file(dir, filename);
raf = new randomaccessfile(file, "rwd");
//設定檔案長度
raf.setlength(length);
mhandler.obtainmessage(msg_init,length).sendtotarget();
} catch (exception e) finally catch (exception e) }}
}/**
* @author dong**/
class downloadthread extends thread
@override
public void run()
}mhandler.sendemptymessage(download_success);
}else
} catch (exception e) finally
if(raf != null)
if(input != null )
} catch (ioexception e) }}
}@suppresswarnings("deprecation")
public void createnotification()
private void notifynotification(long percent,long length)
/*** 安裝apk
** @param context 上下文
* @param file apk檔案
*/public static void installapk(context context, file file) }
notification_item.xml:
<?xml version="1.0" encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal">
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@drawable/ic_launcher"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
android:layout_centervertical="true"
android:padding="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
android:id="@+id/tv_progress"
android:layout_alignparentright="true"
android:padding="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0%"
/>
android:padding="5dp"
android:id="@+id/progress"
style="?android:attr/progressbarstylehorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
最後清單檔案註冊和新增許可權:
android 版本更新之JAR的應用
public void requestdata catch exception e start 解析獲取到輸入流 param inputstream return public static update parse inputstream inputstream else if update nu...
Android如何更新app的版本(中級)
原始出處 作者資訊和本宣告。否則將追究法律責任。版本更新 看看我們要用到哪些技術 1 自定義通知欄 3 asynctask 4 重新整理通知欄中的進度條 5 執行 apk安裝的隱士意圖 6 toast 7簽名 安裝時系統會自動檢測簽名是否一致 8獲得服務端和客戶端的版本號 上 4 隱士意圖來安裝 首...
Android實現版本更新和自動安裝
直接執行的專案和打包的專案apk簽名不同,所以不能直接用開發工具執行專案進行版本更新.需要用apk打包安裝的形式更新,否則會 提示 簽名衝突 無法完成覆蓋安裝 版本更新 public class splashactivity extends activity 初始化資料 private void i...