Android 在AlramManager中,如何检查应用程序是否打开或关闭
根据这个链接()我可以看到“时间到了…现在振动!!!”。 当我的应用程序关闭时,我可以看到“时间到了…现在振动!!!”。到目前为止一切都很好 我的问题是: 1.Whit AlramManager,如何检查应用程序是否打开或关闭 2.如果应用程序已关闭,我如何打开它 编辑: 我编辑了我的应用程序,但当我的应用程序未处于调试模式(即关闭)时,我再次看到“应用程序正在运行”。为什么?我想在应用程序关闭时打开它Android 在AlramManager中,如何检查应用程序是否打开或关闭,android,xamarin.android,alarmmanager,Android,Xamarin.android,Alarmmanager,根据这个链接()我可以看到“时间到了…现在振动!!!”。 当我的应用程序关闭时,我可以看到“时间到了…现在振动!!!”。到目前为止一切都很好 我的问题是: 1.Whit AlramManager,如何检查应用程序是否打开或关闭 2.如果应用程序已关闭,我如何打开它 编辑: 我编辑了我的应用程序,但当我的应用程序未处于调试模式(即关闭)时,我再次看到“应用程序正在运行”。为什么?我想在应用程序关闭时打开它 namespace AlarmManage { [BroadcastReceiver
namespace AlarmManage
{
[BroadcastReceiver(Enabled = true)]
public class MyBroadcastReceiver : BroadcastReceiver
{
private static bool activityVisible;
public override void OnReceive(Context context, Intent intent)
{
Toast.MakeText(context, "Time Up... Now Vibrating !!!",
ToastLength.Long).Show();
Vibrator vibrator = (Vibrator)context
.GetSystemService(Context.VibratorService);
vibrator.Vibrate(2000);
//Application.Context.StartActivity(new Intent(context, typeof(MainActivity)));
if (CheckRunningApplicationReceiver.isAppRunning(context, "AlarmManage.AlarmManage"))
{
// App is running
Toast.MakeText(context, "App is running", ToastLength.Long).Show();
}
else
{
// App is not running
// intent to lounch ur app.
Toast.MakeText(context, "App is not running", ToastLength.Long).Show();
}
}
}
}
namespace AlarmManage
{
public class CheckRunningApplicationReceiver
{
static bool flag = false;
public static bool isAppRunning(Context context, String packageName)
{
ActivityManager activityManager = (ActivityManager)context.GetSystemService(Context.ActivityService);
//List<Android.App.ActivityManager.RunningAppProcessInfo> processInfo = activityManager.RunningAppProcesses;
for (int i = 0; i < activityManager.RunningAppProcesses.Count; i++)
{
if (activityManager.RunningAppProcesses[i].ProcessName.Equals("AlarmManage.AlarmManage")) // make sure your package address of that specific app.
{
//Another App is running
Toast.MakeText(context, activityManager.RunningAppProcesses[i].ProcessName.ToString(), ToastLength.Long).Show();
flag = true;
return flag;
}
}
return flag;
}
}
}
1]在util类中创建一个方法
public static boolean isAppRunning(final Context context, final String packageName) {
final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
if (procInfos != null)
{
for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) {
if (processInfo.processName.equals(packageName)) {
return true;
}
}
}
return false;
}
谢谢你,拉迪。我收到此错误:无法将类型“android.app.activitymanager.runningappprocessinfo”隐式转换为“system.collections.generic.list”
public static boolean isAppRunning(final Context context, final String packageName) {
final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
if (procInfos != null)
{
for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) {
if (processInfo.processName.equals(packageName)) {
return true;
}
}
}
return false;
}
if (Utils.isAppRunning(YourActivity.this, "com.your package name")) {
// App is running
} else {
// App is not running
// intent to lounch ur app.
}