ذكري المظهر:استثناء الأمان مع LaunchMode="singleTask"
-
27-10-2019 - |
سؤال
لقد أعلنت أن وضع إطلاق نشاطي هو مهمة واحدة.إذا قمت بتشغيل طلبي ، فاضغط على زر الصفحة الرئيسية ، انتقل إلى عميل بريد إلكتروني (Gmail في هذه الحالة) ومعاينة مرفق باستخدام طلبي ، أواجه استثناءًا من الأمان على إصدارات Android 2.3 وبعد ذلك ، وهو ما يقول أنني لا أملكني أذونات الوصول إلى مرفقات Gmail.لا يحدث الاستثناء في الإصدارات السابقة ، وإذا لم أستخدم Singletask كأداة إطلاق.
الاستثناء يحدث على هذا السطر-
mContext.getContentResolver().openInputStream(intent.getData());
حيث mContext هو سياق النشاط.
هل هذه مشكلة معروفة؟
أي مساعدة ستكون موضع تقدير حقا.
شكرًا،
أكشاي
المحلول
لقد نشرت هذا على مطوري Android وتلقيت هذا الرد من Dianne Hackborn-
"عذرًا ، ربما يكون هذا خطأ في 2.3 مع محاولة منح إذن URI لمثيل نشاط قيد التشغيل بالفعل. سأبحث في هذا. في الوقت الحالي ، قد يكون الحل الوحيد هو عدماستخدم singleTask للنشاط الذي يتم تشغيله لمعاينة أحد المرفقات. هذا هو الشيء المفضل فعلاً ، نظرًا لأن نشاط المعاينة يجب أن يعمل كمثيل خاص به كجزء من مهمة gmail. "
نصائح أخرى
قد تحدث المشكلة لأن نشاط النية المستدعى في تطبيق 2.3 لا يتناسب مع launchMode:"standard"
أو launchMode:"singleTop"
الشرط المذكور في android: وصف وضع التشغيل.
ولكن سيكون من المفيد أيضًا إلقاء نظرة عليها هذه المسألة:سلوك LaunchMode="singleTask" ليس كما هو موصوف.إنه أمر مخيف، ونأمل ألا تكون مشكلتك متجذرة هناك، ويمكن حلها ضمن الإصدارات الحالية.