2013-06-21 93 views
0

我們已經構建了一個android應用程序。它是一個非市場應用程序,並被部署到該組客戶。使用MobiControl,我們爲我們的應用程序發送新的更新。更新默默發生。我可以使用更新按鈕更新我的android應用程序嗎?

在更新時,如果應用程序正在使用中,並且用戶正在輸入任何數據,則應用程序在不等待用戶確認的情況下關閉!!,用戶升級到較新版本的應用程序並重新啓動它。因爲這個用戶失去了他的變化!另外,由於我們的應用程序處理敏感信息,因此我們無法將它們寫在設備的物理存儲上。因此,「保留和恢復」不是一種選擇。

一個想法我想可能是提供有關我的應用程序從那裏我可以將其更新到新版本(比如設置)的屏幕之一的「更新」按鈕。爲此,我得到了以下代碼,我可以在將APK作爲參數傳遞後顯示安裝意圖。

Intent promptInstall = new Intent(Intent.ACTION_VIEW) 
    .setData(Uri.parse("file:///path/to/myapp.apk")) 
    .setType("application/vnd.android.package-archive"); 
startActivity(promptInstall); 

但是,當上面的代碼執行時,我面臨以下錯誤。

06-21 18:29:01.666: E/AndroidRuntime(8981): Caused by: android.content.ActivityNotFoundException: 
No Activity found to handle Intent { act=android.intent.action.VIEW typ=application/vnd.android.package-archive } 

昨天當我在一行中調用setDataAndType時,它工作。但今天用相同的代碼,我再次面對同樣的問題...

06-25 10:27:39.383: E/AndroidRuntime(3737): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/test/ReinstallSample.apk typ=application/vnd.android.package-archive } 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivityForResult(Activity.java:3370) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivityForResult(Activity.java:3331) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivity(Activity.java:3566) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at android.app.Activity.startActivity(Activity.java:3534) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at com.example.reinstallsample.MainActivity.launchInstaller(MainActivity.java:73) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  at com.example.reinstallsample.MainActivity.reInstall(MainActivity.java:66) 
06-25 10:27:39.383: E/AndroidRuntime(3737):  ... 14 more 
+0

看起來您所調用的活動不在AndroidManifest中。你檢查過了嗎? – CharlyDelta

回答

1

嘗試使用此相反,我從什麼地方記得setDataAndType需要一行來完成。

Intent promptInstall = new Intent(Intent.ACTION_VIEW); 
promptInstall.setDataAndType(Uri.parse(filePath), "application/vnd.android.package-archive"); 
startActivity(promptInstall); 
+0

謝謝!與這個單一的電話它工作正常。唯一的問題是重新安裝後關閉安裝程序對話框,所以你知道任何配置,它不關閉,而是顯示'打開','取消'選項。 –

+0

很抱歉,但並不是說我知道的,這是什麼,而在測試階段那時候,還沒有研究它非常作爲結尾我的項目將被髮布到Play商店,這似乎是禁止我做。 –

相關問題