【发布时间】:2018-09-24 21:20:41
【问题描述】:
我正在创建一个应用程序,它会在用户接到电话时打开另一个应用程序,并在电话结束时关闭该应用程序。
这是我的代码:
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 时)?
谢谢。
【问题讨论】:
-
除了你自己的之外,你无法杀死任何其他应用程序进程。
标签: android android-lifecycle kill-process