2010-06-01 2 views
1

내 앱 중 앱 킬링 기능이 있지만 최대 API 7입니다. 항상 restartPackage (String PackageName); 하지만 API 8 이후 deprecated 그래서 나는 killBackgroundProcesses (String PackageName)을 시도했다. 그러나 그것도 작동하지 않았다.API 8 (Froyo)에서 앱/패키지 죽이기

모두 방법이 ActivityManager 클래스 누군가가 나를 도울 수 있기를 바랍니다

에 있습니다.

+1

당신은 매니페스트에 KILL_BACKGROUND_PROCESSES 권한을 가지고 있습니까? – HXCaine

+0

예 내가 가지고 있고 또한 권한이 누락되는 오류가 발생하지 않습니다. –

답변

1

내 앱 중 하나에서 동일한 기능을 가지고 있거나 오히려 갖고 있었지만 ...이 기능을 수행 한 모든 연구에서 더 이상 가능하지 않습니다.

restartPackages 권한이되지 않는 이유에 대한 SDK 문서 상태이 :

"이것은 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() (응용 프로그램도 1.5에서 실행되기 때문에) 안전하게 int로 안드로이드 OS 버전을 얻을 단지 정적 메서드입니다 .. : 아래 내 응용 프로그램에서 사용하는 몇 가지 예제 코드입니다

AppMode.FROYO_SDK_VERSION은 FroYo API 레벨을 나타내는 정적 최종 정수입니다.

0

이 문제와 관련하여 한 가지 기사가 있습니다.

android 2.2에서는 에뮬레이터 테스트에서 여전히 강제 종료 버튼이 있습니다. 그래서 이것은 사라진 "restartpackage"기능을 극복 할 수있는 방법이 있음을 의미합니다. 하지만 공용 API인지 확실하지 않거나 시스템 수준에서만 사용할 수 있습니다. 희망은 대답은 이전입니다. :(

link text

+0

내가 멀리 할 그것을 연습을 만들기 위해 노력 공공 API가 아닌 물건에서 ... 내 생각 엔 시스템 수준의 권한이 필요한 것입니다.거기 밖으로 다른 애플 리케이션을 닫습니다 애플 리케이션이 있습니다,하지만 그들은 뿌리 장치가 작동해야합니다. – Justin

관련 문제