在寫Android應用的過程中,我們經常會遇到一些應用之間可能有沖突之類的,所以必須是要關閉沖突的應用。
加入A應用要關閉B應用,如果有B應用的代碼,那當然是很簡單,直接寫一個廣播就可以關閉。但是如果我們沒有代碼,我們如何去關閉呢。
由於我現在是Android 4.0的系統,在網上找了很多方法都不行。搜索了很久,找到了解決方案,在此記下了。
List<RunningAppProcessInfo> myappprocess=am.getRunningAppProcesses();
for(RunningAppProcessInfo info:myappprocess)
{
if(info.processName.equals("com.dailyroads.v"))
{
Log.i("zhou", "kill----com.dailyroads.v");
int pid=info.pid;
Method method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage", String.class);
method.invoke(am, "com.dailyroads.v");
if(mytoast==null)
{
mytoast=new Toast(getApplicationContext());
}
mytoast.makeText(getApplicationContext(), R.string.xingcheclose, 1).show();
break;
}
}
這個是我指定關閉包名為“com.dailyroads.v”的應用。
但是只是上面還是不行
我們需要加上權限
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
還需要加上
android:sharedUserId="android.uid.system"
然後把編譯出來的apk簽名,就OK了。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11