سؤال

أحتاج إلى نشاطي للتعامل مع زر المنزل اضغط على جهاز استقبال برمجيا، ولكن الحدث ليس إطلاق النار. ومع ذلك، أستطيع التسجيل بنجاح واستسلام هذا المرشح النوايا إذا أعلن عنها في قسم نشاط manifest.xml. إليك رمز المتلقي الذي لا يعمل:

BroadcastReceiver br;

br = new BroadcastReceiver() {
       @Override
       public void onReceive(Context context, Intent intent) {
               return;  // I put a breakpoint here to see if this gets called
       }
};


IntentFilter intf = new IntentFilter();
intf.addAction(Intent.ACTION_MAIN);
intf.addCategory(Intent.CATEGORY_HOME);
intf.addCategory(Intent.CATEGORY_DEFAULT);

registerReceiver(br, intf);

هل يعرف أحد لماذا لا يتقبض هذا على زر المنزل؟

بالمناسبة، حاولت العمل حول هذا عن طريق إنشاء نشاط آخر وتحديد مرشح نيتنت في البيان. قمت بتعيين "تمكين النشاط" = "FALSE" في البيان، لكنني لم أستطع معرفة كيفية تمكين هذا النشاط في وقت التشغيل. خلاصة القول، أريد فقط تسجيل مرشح النية زر المنزل لتطبيقي فقط عندما يكون طلبي قيد التشغيل، ولا يمكنني معرفة كيفية القيام بذلك.

هل كانت مفيدة؟

المحلول

إذا كنت تحاول تنفيذ شاشة منزلية بديلة، فأنت بحاجة إلى Intent مرشح ليكون في البيان - انظر تطبيق نموذج المنزل في SDK.

إذا كنت تحاول منع مفتاح المنزل، فالرجاء عدم.

نصائح أخرى

يجب ألا تكون هناك حالة يجب ألا تكون هناك حالا، حيث يجب أن تحتاج إلى تجاوز الزر المنزل، فهذا موجود للتأكد من أن المستخدم يحافظ دائما على السيطرة على هاتفه. ما الذي تحاول القيام به بالضبط؟ إذا كنت ترغب في الكشف عن أن نشاطك لم يعد مرئيا، فيجب عليك تجاوز OnStop ().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top