У меня есть виджет, который я создал для 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>
Вам нужно вручную запустить соответствующее приложение хотя бы один раз, чтобы увидеть виджет. До этого он находится в нерабочем состоянии и не будет принимать трансляции и т. Д.
Через несколько дней я разобрался с решением
, так что давайте перейдем к любому из ваших действий, которые будут запущены, когда вы откроете приложение, и в основное действие добавьте только эту строку
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.й