اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يقوم ال ActivityManager بتوفير دالة تقوم بالإفصاح عن التطبيقات التي تعمل في الهاتف , الدالة هي getRunningAppProcesses

وﻻ تأخذ تلك أي معاملات وتقوم بإرجاع list تحتوي بداخلها على العمليات التي تعمل في الهاتف على هيئة الصنف RunningAppProcessesInfo

ويمكنك تنفيذ المطلوب عبر الشفرة التالية 

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();

ومن ثم يمكنك وضع الشفرة السابقة في حلقة تكرارية غير متناهية 

while(true){
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
}

والتحقق من إسم العملية 

while(true){
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (int i = 0; i < runningAppProcessInfo.size(); i++) {
  if(runningAppProcessInfo.get(i).processName.equals("اسم التطبيق")) {
    // قم بتنفيذ عملية ما
  }
  
  }

 

  • 0
نشر
بتاريخ On 11/24/2021 at 09:14 قال شرف الدين2:

يقوم ال ActivityManager بتوفير دالة تقوم بالإفصاح عن التطبيقات التي تعمل في الهاتف , الدالة هي getRunningAppProcesses

وﻻ تأخذ تلك أي معاملات وتقوم بإرجاع list تحتوي بداخلها على العمليات التي تعمل في الهاتف على هيئة الصنف RunningAppProcessesInfo

ويمكنك تنفيذ المطلوب عبر الشفرة التالية 


ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();

ومن ثم يمكنك وضع الشفرة السابقة في حلقة تكرارية غير متناهية 


while(true){
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
}

والتحقق من إسم العملية 


while(true){
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (int i = 0; i < runningAppProcessInfo.size(); i++) {
  if(runningAppProcessInfo.get(i).processName.equals("اسم التطبيق")) {
    // قم بتنفيذ عملية ما
  }
  
  }

 

قمت بتجربة هذا الكود ولكن:

 1. هذا الكود لا يعمل الا عندما اقوم بتشغيل البرنامج الذي يحتوي على الكود ، انا اريد أن اقوم بتثبيته فقط ثم هو يقوم بالعمل عندما يتم تشغيل البرنامج المحدد

2. عندما قمت بتنفيذ الكود (وبدل الاختبار جعلته يعرض اسماء التطبيقات التي تعمل) ولكن لم يعرض لي الا اسم برنامجي الذي يحوي هذا الكود . طبعا بعد ان قمت بعمل دوارة منتهيه بدل while التي وضعتها كغير منتهيه مثلا جعلتها تدور عشر مرات ولكن كل ما تم عرضه هو فقط اسم برنامجي مع العلم انه كان يوجد عدة تطبيقات تعمل في الخلفية مشغل موسيقى وفيديو وعدة تطبيقات ولكن لم يعرضها

يا اخي بالمختصر اريد ان تطبيق يقوم بحذف ملفات الفيديو التي بتم عرضها في الشاشة الرئيسية لتطبيق SHAREit .

قمت بعمل التطبيق وجعلته يعمل في الخفاء حيث عملت Alarm Manager يستدعي دالة الحذف في كل دقيقة وتم العمل بنجاح ، ولكن هذة الطريقة تستهلك البطارية ، فبدلا من عمل التطبيق دائما اريده فقط ان يعمل عندما يكون تطبيق SHAREit نشط.

  • 0
نشر (معدل)

المشكلة انه لا يمكن تنفيذ هذه العمليه(اي الحصول على التطبيقات النشطه حاليا) من اندرويد لوليب (Android L) والنسخ التاليه بغرض الامان.

 

عندما جربت التطبيق الذي عملته بنفس الكود الذي تفظلت به على نسخ قديمه من اندرويد تم بنحاح.

 

 

على العموم مشكور اخي وحزاك الله خيرا

تم التعديل في بواسطة رفيق هادي مبارك هادي مشعيل

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...