2010-06-01 37 views
1

我在其中一個應用程序中有一個應用程序查殺功能,但在API 7之前我一直使用restartPackage(String PackageName);但由於API 8已棄用,所以我嘗試了killBackgroundProcesses(String PackageName);但那也沒用。在API 8(Froyo)中殺死一個應用程序/包

兩者都是方法是在ActivityManager

我希望有人能幫助我。

+1

你有KILL_BACKGROUND_PROCESSES許可,您的清單? – HXCaine 2010-06-01 17:34:12

+0

有,我有,我也沒有得到一個錯誤,一個權限丟失。 – 2010-06-01 18:12:57

回答

1

我在我的一個應用程序中擁有,或者更確切地說,具有相同的功能......從我完成此功能的所有研究已不再可能。

的SDK文檔狀態這一下爲什麼restartPackages權限被棄用:

「這是現在只是killBackgroundProcesses(串)的包裝;在此之前的行爲不再提供給應用程序,因爲它允許他們打破其他應用程序通過消除警報,停止服務等。「

這似乎暗示用戶可見的任何內容都不能再由SDK應用程序關閉。我對這個決定感到非常失望,如果有人知道解決方法,我也對答案感興趣。

據我所知,有可能「打破」其他應用程序啓用此功能,但我認爲這是整個權限系統的用途。用戶知道應用授予的權限,從而知道可能的後果是什麼。

我不知道有多少人來找我,要求我解決他們不能再通過我的應用程序關閉FroYo中的應用程序的事實。


編輯:

我已經能夠拿出的最好的事情是增加提供一鍵式的解決方案去系統的應用程序信息頁面對於給定的應用程序的能力。下面是我在我的應用程序中使用一些示例代碼:)

public Intent getManagePkgIntent(String pkgName) 
    { 
     int osVersion = AppMode.getAndroidVersion(); 

     Intent intent = new Intent(); 
     if (osVersion > AppMode.FROYO_SDK_VERSION) 
     { 
      //Settings.ACTION_APPLICATION_DETAILS_SETTINGS - THIS CONSTANT ISN'T AVAILABLE UNTIL COMPILING WITH 2.3 
      intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); 
      intent.setData(Uri.fromParts("package", pkgName, null)); 
      return intent; 
     } 
     else //FROYO And Older... 
     { 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); 

      String pkgExtra = (osVersion != AppMode.FROYO_SDK_VERSION) ? "com.android.settings.ApplicationPkgName" : "pkg"; 
      intent.putExtra(pkgExtra, pkgName); 
     } 

     if (m_pkgMgr.resolveActivity(intent, 0) == null) 
      return null; 

     return intent; 
    } 

AppMode.getAndroidVersion(僅僅是安全地獲取Android操作系統版本爲int(因爲應用程序也運行1.5)一個靜態方法.. 。

AppMode.FROYO_SDK_VERSION只是一個指示FroYo API級別的靜態final int。

0

有一篇文章討論了這個問題。

在android 2.2中,模擬器測試中仍然存在「強制關閉」按鈕。所以這意味着它仍然有辦法克服消失的「重新啓動包裝」功能。 但我不確定它是公共API還是隻允許系統級別使用。希望答案是前者。 :(

link text

+0

我試圖使它成爲一個慣例走就走從不公開API的東西...我的猜測是,這是需要系統級權限的東西。有些應用程序會關閉其他應用程序,但它們需要根植設備才能運行。 – Justin 2011-04-06 23:10:05