Я создаю приложение, которое включает другое приложение каждый раз, когда пользователь получает телефонный звонок, и выключает это приложение, когда телефонный звонок заканчивается.
Это мой код:
public class MyPhoneReceiver extends BroadcastReceiver {
@Override
public void onReceive( Context context, Intent intent ) {
final String PROXIMITY_SERVICE_PACKAGE_NAME = "package_name";
Bundle extras = intent.getExtras();
String state = extras.getString( TelephonyManager.EXTRA_STATE );
if (state.equals( TelephonyManager.EXTRA_STATE_RINGING ) ) {
PackageManager packageManager = context.getPackageManager();
context.startActivity( packageManager.getLaunchIntentForPackage(
PROXIMITY_SERVICE_PACKAGE_NAME ) );
}
if ( state.equals(TelephonyManager.EXTRA_STATE_IDLE ) ) {
killProcess(context, PROXIMITY_SERVICE_PACKAGE_NAME);
}
}
В настоящее время метод killProcess реализован следующим образом:
private void killProcess(Context context, String packageName)
{
ActivityManager am = (ActivityManager)context.getSystemService(Activity.ACTIVITY_SERVICE);
am.killBackgroundProcesses(packageName);
}
Я также запрашиваю разрешение на уничтожение фоновых приложений в манифесте.:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
Открытие приложения работает, но закрытие приложения - нет.Я знаю, что достигну кода в killProcess, но это не убивает приложение.Это проблема с разрешениями?Разве мне не разрешено убивать другой процесс?даже не процесс, который я создал?
Или, возможно, из того, что я знаю о процессе, который я запускаю, он создает сервис, который выполняет всю работу за него.Может быть проблема в том, что сервис не прекращается?
Есть ли способ завершить этот процесс и все связанные с ним службы и подпроцессы (например, когда вы выполняете FORCE STOP в настройках)?
Спасибо.