2011-08-15 43 views
13

Tôi muốn chạy một đoạn mã một lần sau khi ứng dụng được cài đặt. Sau khi nó đã được thực hiện, đoạn mã cụ thể đó không nên được gọi lại, ngay cả khi nâng cấp.Chỉ chạy mã một lần sau khi ứng dụng được cài đặt trên thiết bị Android

+3

nên không phải là chỉ là một phần của trình cài đặt? – Woot4Moo

+0

@ Woot4Moo - Ý bạn là gì bởi trình cài đặt? Tôi không quen thuộc với điều đó (trên android) – MByD

+0

Tôi không phát triển trên nền tảng mà tôi chỉ nghĩ rằng Google sẽ tạo ra một khung công tác mở rộng cho các trình cài đặt. Giống như installbuilder hoặc installshield. – Woot4Moo

Trả lời

35
  1. Kiểm tra nếu boolean X là True trong tùy chọn chia sẻ
  2. Nếu không:
    a. Chạy mã đặc biệt
    b. Lưu x là đúng trong tùy chọn chia sẻ

Ví dụ:

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 - Tôi đánh giá cao một bình luận – MByD

+0

nó luôn bỏ qua câu lệnh if cho tôi .. làm thế nào bạn quản lý để thực hiện nó. bạn có thể vui lòng chia sẻ nó với tôi ... cảm ơn ... – medampudi

+0

@medampudi - Tôi đã phạm sai lầm, điều kiện nên ngược lại. xem chỉnh sửa. – MByD

4

Tôi đã sử dụng một sở thích được chia sẻ trong quá khứ, nhưng nếu bạn đang muốn làm một cái gì đó onInstall bạn cũng có thể nhìn vào một cài đặt người nhận. dụng cụ 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 "không phải là một cách an toàn, bởi vì khi cài đặt ứng dụng, ứng dụng đang ở trạng thái STOP. Có lẽ tôi không thể giải thích nó tốt nhưng với một ít nghiên cứu về" INSTALL_REFERRER "sẽ biết điều này. – David

0

sử dụng mã này đơn giản

if (getPreferences(MODE_PRIVATE).getBoolean("is_first_run", true)) { 
     /* 
     * your code here 
     */ 
     getPreferences(MODE_PRIVATE).edit().putBoolean("is_first_run", false).commit(); 
    } 
Các vấn đề liên quan