My app checks whether an application is running, shows its PID, and aims to kill it on a button click. I am using android.os.Process.killProcess();
but it is just on happening. When I check for it in the Running Applications
section in settings, I still find it running. Is there any other way to achieve what I want ?
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
int pid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button B = (Button) findViewById(R.id.button);
TextView PI = (TextView) findViewById(R.id.tV);
if (isAppRunning("com.whatsapp")) {
Toast.makeText(this, "Running", Toast.LENGTH_SHORT).show();
PI.setText(Integer.toString(getPid("com.whatsapp")));
B.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
android.os.Process.killProcess(getPid("com.whatsapp"));
Toast.makeText(MainActivity.this, "Killed", Toast.LENGTH_SHORT).show();
}
});
}else
Toast.makeText(this, "Not Running", Toast.LENGTH_SHORT).show();
}
public boolean isAppRunning (String aApplicationPackageName)
{
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
if (activityManager == null)
{
return false;
}
List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
for(int idx = 0; idx < procInfos.size(); idx++)
{
if(procInfos.get(idx).processName.equals(aApplicationPackageName))
{
return true;
}
}
return false;
}
public int getPid (String packageName){
ActivityManager am = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> pids = am.getRunningAppProcesses();
int processid = 0;
for(int i = 0; i < pids.size(); i++) {
ActivityManager.RunningAppProcessInfo info = pids.get(i);
Log.i("PID",pids.get(i) + "");
Log.i("PID Package",info.processName);
if(info.processName.equalsIgnoreCase(packageName)){
processid = info.pid;
return processid;
}
}
return -1;
}
}