Android: Добавление данных к Поглощенным сбоям для загрузки Действия

У меня есть виджет, который предположил для вызова Действия главного приложения, когда пользователь нажимает на тело виджета. Мои работы установки для единственного экземпляра виджета, но для второго экземпляра того же виджета, PendingIntent снова используется и как результат важная информация, которую я отправляю как дополнительный, перезаписываются для 1-го экземпляра. Таким образом, я полагал, что должен передать идентификатор виджета как Intent данные однако, как только я добавляю Intent#setData Я видел бы в журнале, что 2 отдельных Намерения соответственно запущены, но Действию не удается взять его так в основном, Действие не подойдет, и ничего не происходит (никакая ошибка, или предупреждение эфира) Вот то, как действие является установкой в Декларации:

    <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 каждый в его собственном пакете и Декларации

5
задан Bostone 11 April 2010 в 20:39
поделиться

1 ответ

Думаю, вам понадобится тег в вашем , чтобы намерение, которое вы запускаете, соответствует зарегистрированному вами фильтру намерений.

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>
4
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: