Вопрос

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

    <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