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

الـ BroadcastReceiver وتطبيقات اندرويد التي تعمل الخفاء وكيفية التحكم بها

السؤال

انا عملت تطبيق يعمل في الخفاء عند تنفيذ مهمه محددة .

الكود هو كالاتي :

اولا : عملت كلاس يرث من BroadcastReceiver كالاتي :

public class bbb extends BroadcastReceiver {


  @Override
  public void onReceive(Context context, Intent intent) {

    Toast.makeText(context," السلام عليكم ",1).show();

  }
}

حيث يتم استدعائه وتنفيذ الكود الذي بداخله عندما يتم تغيير حالة WIFI او عند تغيير حالة وضع الطائرة ويتم ذلك بوضع الاكواد التالية في ملف androidmanifest.xml :

الاستدعاء عند تغيير وضع الطائره: 

<action android:name="android.intent.action.AIRPLANE_MODE"/>

الاستدعاء عند تغيير حالة WIFI :

<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>

وذلك كالاتي :

<receiver android:name=".aaa" 

          android:enabled="true" 

          android:exported="true">

  <intent-filter>

    <action android:name="android.intent.action.AIRPLANE_MODE"/>

    <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>

  </intent-filter>

</receiver>

الذي اريده انا :

1. هل يمكن الاستدعاء يتم عند تشغيل تطبيق آخر (بدلا من الاستدعاء عند تغيير حالة wifi او وضع الطائره) مثلا عند تشغيل متصفح الذاكرة.

 2. بدلا من الاستدعاء عند تغيير حالة wifi هل يمكن جعلة يستدعي فقط عندما يتم تشغيل wifi (اي انه كان wifi شغال وقمنا باطفاءة لا يتم الاستدعاء)

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
بتاريخ 14 دقائق مضت قال رفيق هادي مبارك هادي مشعيل:

بدلا من الاستدعاء عند تغيير حالة wifi هل يمكن جعلة يستدعي فقط عندما يتم تشغيل wifi (اي انه كان wifi شغال وقمنا باطفاءة لا يتم الاستدعاء)

يمكنك التحقق من حالة ال WIFI في حال كان يعمل أم لا داخل ال BroadcastReciever وتنفيذ المطلوب أو تجاهل التنفيذ كليًا بحسب الحالة المطلوبة كالتالي:

public class bbb extends BroadcastReceiver {


  @Override
    public void onReceive(Context context, Intent intent) {

    int wifiStateExtra = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);

    // يعمل WIFI
    if(wifiStateExtra == WifiManager.WIFI_STATE_ENABLED) {
      Toast.makeText(context," السلام عليكم ",1).show();
    }

  }
}

 

بتاريخ 14 دقائق مضت قال رفيق هادي مبارك هادي مشعيل:

هل يمكن الاستدعاء يتم عند تشغيل تطبيق آخر (بدلا من الاستدعاء عند تغيير حالة wifi او وضع الطائره) مثلا عند تشغيل متصفح الذاكرة

لا يمكن ذلك تقريبا بشكل مباشر لانه يعتبر تسريب لمعلومات عن المستخدم واستخدامه للتطبيقات الأخرى، لكن قد يمكنك التحقق من التطبيقات التي تعمل حاليًا (أثناء تشغيل تطبيقك) كالتالي:

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("com.the.app.you.are.looking.for") {
    // التطبيق المستهدف يعمل حاليا
  }
}

ويجب إضافة الساحية التالية:

<uses-permission android:name="android.permission.GET_TASKS" />

لكن بعد نسخة 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...