我創建了一個android應用程序,並將其導出爲*.apk
。安裝成功後是否可以自動刪除apk
文件?安裝後刪除應用程序(* .apk)
回答
如果要安裝一些其他APK通過你的應用程序下載,並希望刪除一旦成功安裝後,也跟着我 - )
第1步: 聲明按照您的AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_ADDED" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_INSTALL" />
<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" />
權限
第2步: 登記接收
<receiver
android:name="com.az.appstore.InstallReceiver"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<data android:scheme="package" />
</intent-filter>
</receiver>
第4步:
在你安裝活動創建一個哈希表這樣的,我在ApplicationMain
創建的,它會根據不同的實現。
public static final ConcurrentHashMap<String, File> INSTALL_APK_INFO = new ConcurrentHashMap<String, File>();
並用包名和文件填充它,其中放置apk。您可以使用此方法
public static String getPackageNameForAPK(final String archiveFilePath, Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageArchiveInfo(archiveFilePath, PackageManager.GET_META_DATA);
return info.packageName;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
第5步從任何APK得到Pacakage名稱: 現在,在安裝接收器只是這樣做
if (action.equals(Intent.ACTION_PACKAGE_ADDED) || action.equals(Intent.ACTION_PACKAGE_CHANGED) || action.equals(Intent.ACTION_PACKAGE_INSTALL) || action.equals(Intent.ACTION_PACKAGE_REPLACED)) {
ApplicationInfo info = null;
try {
info = context.getPackageManager().getApplicationInfo(intent.getDataString().split(":")[1], PackageManager.GET_META_DATA);
} catch (Exception e) {
e.printStackTrace();
}
try {
if (info != null) {
File file = ApplicationMain.INSTALL_APK_INFO.get(info.packageName);
if (file != null) {
file.delete();
ApplicationMain.INSTALL_APK_INFO.remove(info.packageName);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
摘要
1)創建一個HashMap和使用APK包名稱和文件填充它。文件就是您的APK存在的地方。
要求安裝APK
public static void installUpdateAPK(Context context, String pathToAPK) {
pathToAPK = pathToAPK.replace("file:///", "");
final Intent intent = new Intent(Intent.ACTION_VIEW);
File file = new File(pathToAPK);
intent.setDataAndType(Uri.fromFile(file), APK_MIME_TYPE);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
String name = getPackageNameForAPK(pathToAPK, context);
if (name != null) {
ApplicationMain.INSTALL_APK_INFO.put(name, file);
}
}
2)註冊包添加,更改,安裝意圖
3)接收器上得到的是從Intent
4安裝包的名稱)從你的hashmap獲取文件對象,只需撥打delete()
什麼是導入ApplicationMain的軟件包?我試圖搜索,但找不到任何。 – thepace
@thepace請參閱「第4步」,您可以在任何類中聲明此映射,我已經在ApplicationMain中聲明瞭它 –
當應用程序啓動時,您可以手動檢查sdcard/download文件夾(或其他可以保存apk的地方)。然後從那裏刪除它。
爲避免在每次運行中搜索,您可以在您的共享首選項中存儲first_run字段。默認情況下將字段設置爲true,第一次運行後將其設置爲false。因此,您可以檢測到第一個小矮人
將工作。但是有沒有內置的方法來做到這一點? –
從應用程序中無法檢測到它是否已安裝。所以最好的方法是手動完成......看我編輯的答案 – stinepike
感謝您的建議...... :) –
如果您知道將apk下載到設備上的哪個位置,則可以在您的應用第一次運行時將其刪除。如果它位於SD卡上,則需要獲得寫入的權限。
但是,如果您不知道它保存的位置,那麼您最好還是必須掃描設備以找到包含您輸入名稱的apk文件並將其刪除。
此外,一旦安裝,apks被複制到內部存儲。任何擁有固定設備的用戶都可以恢復您的apk。
Beta測試是一個信任問題。如果你不相信你給apk安裝測試的人,不要把它給他們。
安裝完成後,是否從設備的SD卡中刪除APK並不重要。即使這樣的功能可以在應用程序中編程,任何擁有固定設備的用戶都可以通過始終能夠從/data/app/
系統分區訪問APK。這首先有效地消除了你刪除APK的努力。
這就是說,你可以添加一個函數,在第一次運行時會刪除APK。由於APK可以保存/存儲在SD卡上的任何地方,我認爲這些問題應該幫助你。
要查找文件:Search entire sdcard for a specific file
要刪除一旦發現文件:How to delete a file from SD card?
- 1. 安裝後,apk會自動刪除嗎?
- 2. 如何在安裝後刪除.apk
- 3. 如何刪除Android安裝後的apk
- 4. 從應用程序apk安裝程序中刪除完成按鈕
- 5. 安裝APK程序
- 6. 在android應用程序中安裝apk
- 7. Android應用程序未安裝(APK)
- 8. Eclipse中自動刪除的apk安裝後的apk
- 9. Android Studio 3 - 安裝後無法運行應用程序APK
- 10. 應用程序沒有安裝後簽署的apk
- 11. 安裝apk時出現「應用程序未安裝」錯誤
- 12. Android .apk安裝 - 應用程序未安裝
- 13. 從市場安裝APK從應用程序內提示安裝
- 14. 可以安裝的應用程序與安裝後的apk文件被盜版
- 15. 的AppX中安裝的應用程序可以刪除舊的安裝使用MSI安裝的應用程序?
- 16. MSI安裝程序在安裝後刪除目標文件夾
- 17. OSX簽署的應用程序和安裝程序,安裝簽名被刪除
- 18. 安裝文件apk裏面的apk應用程序
- 19. android應用程序autoupdate如果apk存在然後刪除
- 20. 安裝apk程序錯誤
- 21. Sliently安裝的apk程序
- 22. 安裝後未出現應用程序
- 23. 在安裝我的應用程序(我使用安裝項目)後,添加/刪除程序中沒有條目
- 24. apk未列在電話應用程序安裝程序中
- 25. 安裝後刪除程序從添加/刪除程序列表Wix
- 26. 應用程序安裝說「應用程序未安裝」
- 27. 應用程序安裝失敗 - 安裝應用程序viaOTA
- 28. 如何刪除Android上未安裝的應用程序
- 29. Android應用程序安裝「應用程序未安裝」
- 30. 爲什麼數據庫在重新安裝apk後被刪除?
從哪裏刪除APK? –
來自SD /磁盤。由於我正在將APK發給我的朋友進行beta測試。 –
但一些應用程序,如藍牙應用程序發件人,他們再次獲得它的apk。 – Senthil