Android - Samsung: создание виджета с активностью настройки завершается неудачно
Я построил приложение с возможностью добавления виджетов на домашний экран. Виджет работает с моим Nexus 6P и Motorola Moto G3.
С телефонами Samsung (протестировано с S3 mini (4.1.2), S5, S6 (6.0.1)) виджет вообще не добавляется или происходит сбой TouchWiz.
С другим лаунчером (Nova) виджет также не создается на S3 mini.
В logcat я не вижу никаких сообщений об ошибках вообще.
Я пытался максимально сузить проблему. Виджет создается, если я удаляюandroid:configure="de.cliff.strichliste.widgets.WidgetConfigurationActivity"
из counter_widget_info.xml. Если я хочу использовать настройку активности, TouchWiz вылетает на Samsung S3 mini.
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="40dp"
android:minHeight="40dp"
android:configure="de.cliff.strichliste.widgets.WidgetConfigurationActivity"
android:updatePeriodMillis="1800000"
android:initialLayout="@layout/widget_counter"
android:resizeMode="horizontal|vertical"
android:widgetCategory="home_screen"
android:previewImage="@drawable/widget_preview">
</appwidget-provider>
В AndroidManifest.xml я регистрирую виджет со следующими строками:
<receiver
android:name=".widgets.CounterWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/counter_widget_info" />
</receiver>
На стороне Java у меня есть следующее в WidgetConfigurationActivity:
public class WidgetConfigurationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WidgetConfigurationBinding binding = DataBindingUtil.setContentView(this, R.layout.widget_configuration);
setResult(RESULT_OK);
}
}
И это в классе WidgetProvider:
public class CounterWidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
Intent intent = new Intent(context, CounterWidgetProvider.class);
context.startService(intent);
}
}