2011-08-15 33 views
13

我只想在安裝應用程序後運行一段代碼。執行完後,即使升級,也不應再次調用該特定代碼。在Android設備上安裝應用程序後僅運行代碼

+3

難道不應該僅僅是安裝程序的一部分嗎? – Woot4Moo

+0

@ Woot4Moo - 你的安裝程序是什麼意思?我不熟悉那個(在Android上) – MByD

+0

我沒有在平臺上開發,我只是認爲Google會爲安裝程序提供一個可擴展的框架。像installbuilder或installshield一樣。 – Woot4Moo

回答

35
  1. 檢查布爾X是在共享偏好
  2. 如不屬實:
    一個。運行特殊代碼
    b。保存x作爲真正的共享偏好

例如:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
if(!prefs.getBoolean("firstTime", false)) { 
    // run your one time code 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putBoolean("firstTime", true); 
    editor.commit(); 
} 
+1

@Downvoter - 我會很感激評論 – MByD

+0

它總是跳過我的if語句..你是如何設法執行它的。可以請你與我分享...謝謝... – medampudi

+0

@medampudi - 我犯了一個錯誤,條件應該是相反的。請參閱編輯。 – MByD

4

我已經在過去使用共享的偏好,但如果你想要做一些事情onInstall你也可以看一個安裝接收器。 MyInstallReciever工具BroadcastReciever

<receiver 
    android:name="com.MyInstallReciever" 
    android:exported="true"> 
    <intent-filter> 
     <action 
      android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
</receiver> 
+0

「com.android.vending.INSTALL_REFERRER 「不是一種安全的方式,因爲在安裝應用程序時,應用程序處於停止狀態,也許我無法解釋它的好處,但對」INSTALL_REFERRER「的一些研究知道這一點。 – David

0

使用這個簡單的代碼

if (getPreferences(MODE_PRIVATE).getBoolean("is_first_run", true)) { 
     /* 
     * your code here 
     */ 
     getPreferences(MODE_PRIVATE).edit().putBoolean("is_first_run", false).commit(); 
    } 
相關問題