Android 4.0: виджеты не отображаются?

У меня есть виджет, который я создал для Android 2.1, который отлично работает и продается на рынке.

У меня был пользователь, который жаловался, что он купил его, но он так и не появился на его устройстве Android 4.0.

Я загрузил эмулятор 4.0, запустил его из Eclipse, он сообщил об успешной установке, и на самом деле я вижу его в списке приложений "Widget Preview", и я могу запустить его там, и он выглядит нормально, но он нигде не отображается в разделе "Виджеты" - я не могу найти его, чтобы перетащить на главный экран! Я предполагаю, что это то же самое, что видит пользователь.

Есть идеи, что здесь происходит? Почему в версии 2.1 он работает нормально, а в версии 4.0 не отображается в списке, даже после успешной установки?

Вот мой файл layout\widget.xml, если это поможет:

<RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView android:layout_width="wrap_content" android:id="@+id/blankspot" android:layout_height="5dp" android:gravity="center" android:shadowDy="1" android:shadowDx="1" android:layout_centerHorizontal="true"></TextView> 
    <ImageButton android:layout_below="@+id/blankspot" android:layout_width="60dp" android:layout_height="60dp" android:id="@+id/widgetIconButton" android:layout_centerHorizontal="true" android:scaleType="centerCrop" android:src="@drawable/volumeprofilesplus" android:background="@null"></ImageButton>
    <ImageView android:layout_width="60dp" android:layout_height="20dp" android:id="@+id/override" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:scaleType="fitXY" android:background="@null" android:src="@drawable/overredcaps" android:visibility="invisible"></ImageView>
    <ImageButton android:layout_below="@+id/widgetIconButton" android:layout_width="70dp" android:layout_height="30dp" android:id="@+id/widgetSettingsButton" android:layout_centerHorizontal="true" android:scaleType="fitXY" android:src="@drawable/settings" android:background="@null"></ImageButton>
</RelativeLayout>

И xml\widget_provider.xml:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="72dip"
    android:minHeight="72dip"
    android:updatePeriodMillis="0"
    android:initialLayout="@layout/main" >    
</appwidget-provider>
27
задан JamieB 10 January 2012 в 19:55
поделиться

2 ответа

Вам нужно вручную запустить соответствующее приложение хотя бы один раз, чтобы увидеть виджет. До этого он находится в нерабочем состоянии и не будет принимать трансляции и т. Д.

1
ответ дан 28 November 2019 в 05:42
поделиться

Через несколько дней я разобрался с решением

, так что давайте перейдем к любому из ваших действий, которые будут запущены, когда вы откроете приложение, и в основное действие добавьте только эту строку

sendBroadcast (новый Intent (Intent.ACTION_MAIN) .addCategory (Intent.CATEGORY_HOME));

как пример

public class Default class extends Activity  {


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
       sendBroadcast(new Intent(Intent.ACTION_MAIN)
       .addCategory(Intent.CATEGORY_HOME));
    setContentView(R.layout.main);



}

вот и все, это даст системе, в которой сейчас работает основное приложение, и он выведет виджет в панель запуска :) простая строка, что он ничего не меняет в манифесте, просто придерживайтесь того способа, которым вы разработали ур приложение, которое обычно отображает виджет в предыдущих версиях < 4.й

9
ответ дан 28 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

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