سؤال

لديّ عنصر واجهة مستخدم من المفترض أن أتصل بنشاط التطبيق الرئيسي عندما ينقر المستخدم على الجسم عنصر واجهة المستخدم. يعمل الإعداد الخاص بي لمثيل عنصر واجهة مستخدم واحد ، لكن بالنسبة للمثيل الثاني من نفس القطعة التي يتم إعادة استخدامها المعلقة ، ونتيجة لذلك ، يتم كتابة المعلومات الحيوية التي أرسلها كإصدار إضافي للمثيل الأول. لذلك اعتقدت أنني يجب أن اجتاز معرف القطعة كـ Intent البيانات ولكن بمجرد إضافة Intent#setData أود أن أرى في السجل أن اثنين من النوايا المنفصلة يتم إطلاقها بشكل مناسب ولكن النشاط فشل في التقاطه حتى لا يظهر النشاط بشكل أساسي ولا يحدث شيء (لا يوجد خطأ أو تحذير) ، إليك كيفية إعداد النشاط في البيان:

    <activity android:name=".SearchResultsView" 
         android:label="@string/search_results"
        <intent-filter>
            <action android:name="bostone.android.search.RESULTS" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

وهنا رمز يتم إعداده للتعامل مع النقر

Intent di = new Intent("bostone.android.search.RESULTS");
di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// if line below is commented out - the Activity will start
di.setData(ContentUris.withAppendedId(Uri.EMPTY, widgetId));
di.putExtra("URL", url);
views.setOnClickPendingIntent(R.id.widgetContent, 
    PendingIntent.getActivity(this, 0, di, 0));

يتم تعبئة التطبيق الرئيسي والعناصر واجهة المستخدم كـ 2 APK منفصلين لكل منهما في الحزمة الخاصة به واضحة

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

المحلول

أعتقد أنك بحاجة إلى <data> علامة في الخاص بك <intent-filter> لكي تناسبك أن تطلق النار لمطابقة المرشح القصد الذي قمت بتسجيله.

https://developer.android.com/guide/topics/manifest/data-element.html

أيضا استخدام uri.empty قد يكون مشكلة. سأقوم بإنشاء مخطط URI الخاص بك ، بحيث تبدو مكالمة setData () شيئًا مثل:

di.setData(Uri.withAppendedPath(Uri.parse("droidln://widget/id/"), String.valueOf(appWidgetId)));

وسيبدو مرشح نيتك:

    <intent-filter>
        <action android:name="bostone.android.search.RESULTS" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="droidln"/>
    </intent-filter>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top