2011-12-14 24 views
3

在我的應用程序中,我讓用戶根據不同計劃購買應用程序,例如2小時免費,1天,1周等。如何讓用戶在到期後使用應用程序?

我希望不要讓用戶在到期時間後使用應用程序。我在主要活動和服務中創建了一項服務並設置了警報。我已經告知,在到期時間之後打開主要活動。

在主要活動中設置報警代碼:

private void updateService(){ 
     Intent myIntent = new Intent(DRMActivity.this, AlarmService.class); 
     pendingIntent = PendingIntent.getService(DRMActivity.this, 0, myIntent, 0); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.add(Calendar.SECOND, 30); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 

     Toast.makeText(DRMActivity.this, "Start Alarm", Toast.LENGTH_LONG).show(); 
    } 

服務的代碼:

@Override 
    public void onStart(Intent intent, int startId) { 
     super.onStart(intent, startId); 

     Intent myIntent = new Intent(getBaseContext(), DRMActivity.class); 
     myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     Toast.makeText(this, "AlarmService.onStart()", Toast.LENGTH_LONG).show(); 

     getApplication().startActivity(myIntent); 
    } 

到目前爲止,一切都OK了,即使我的主要活動被破壞,服務可以運行它再次。但我認爲,在android中,不幸的是,應用程序是由多個活動構建的,因此,從活動中我們無法停止應用程序。我的意思是? 我們有finish()方法來終止活動,但它不能關閉整個應用程序。因此,在終止應用程序的活動之後,該應用程序的以前的活動將顯示。

所以,回到我的故事。例如30秒後(根據上述代碼)服務將運行我的主要活動。但如果用戶輕鬆點擊返回按鈕會發生什麼?他/她可以回到以前的申請活動並繼續使用。

一個很好的建議是創建共享首選項,並在服務中更改一個標誌,並在onStart()我檢查它的每個活動。我認爲它可行,但壞事是我正在處理一個包裝,它應該被添加到其他項目,我不能要求其他開發人員添加或檢查。

你的建議是什麼?無論如何不讓用戶在到期後繼續使用應用程序?

=======> UPDATE:

以供將來參考。我用FLAG_ACTIVITY_CLEAR_TOP,問題解決了。現在,即使用戶點擊後退按鈕,主活動和上次活動之間的所有活動都將被清除。據其文檔:

如果設置,以及正在啓動的活動中 當前任務已在運行,然後,而不是發動那 活動的新實例,其他所有的活動在它的上面會被關閉並且 這個意圖將作爲 新的意圖被傳遞到(現在在最上面的)舊活動。

例如,考慮一個由任務的活動:A,B,C,D. 如果d用解析爲活動B的 成分的意圖調用startActivity(),則C和d將是成品和B收到 給定的意圖,導致堆棧現在正在:A,B。

回答

0

三種可能性:

  1. 覆蓋onBackPressed()什麼也不做。
  2. 通過將flag添加到原始啓動的Intent中,將Activity從背面堆棧中刪除。
  3. 將一些數據提交到SharedPreferences,並在用戶返回時在onResume中檢查它。如果數據表示已過期,請停用您想要的任何功能。
+0

謝謝親愛的LuxuryMode。你的第二個建議是非常有用的,但不是那個標誌,我使用了FLAG_ACTIVITY_CLEAR_TOP,這對我來說更合適。 – Hesam 2011-12-14 03:22:27

相關問題