Android:Widget说加载Widget失败
当我在主屏幕上单击我的小部件时,闪光灯亮起,弹出消息“加载小部件时出现问题!”!有人知道这个问题吗 单击小部件之前/之后: res/xml/flashlight\u appwidget\u info.xmlAndroid:Widget说加载Widget失败,android,android-widget,broadcastreceiver,Android,Android Widget,Broadcastreceiver,当我在主屏幕上单击我的小部件时,闪光灯亮起,弹出消息“加载小部件时出现问题!”!有人知道这个问题吗 单击小部件之前/之后: res/xml/flashlight\u appwidget\u info.xml <?xml version="1.0" encoding="utf-8" ?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" andr
<?xml version="1.0" encoding="utf-8" ?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="50dp"
android:initialLayout="@layout/flash_widget"
android:updatePeriodMillis="1000"
android:minHeight="50dp"
/>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_height="50dp"
android:layout_width="50dp"
android:orientation="horizontal">
<Button
android:id="@+id/button"
android:layout_height="50dp"
android:layout_width="50dp"
android:background="@drawable/ic_launcher" />
</LinearLayout>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name=".FlashlightWidgetProvider" android:icon="@drawable/ic_launcher" android:label="@string/app_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/flashlight_appwidget_info" />
</receiver>
<receiver android:name="FlashlightWidgetReceiver">
<intent-filter>
<action android:name="COM_FLASHLIGHT"></action>
</intent-filter>
</receiver>
闪光灯WidgetReceiver
public class FlashlightWidgetReceiver extends BroadcastReceiver {
private static boolean isLightOn = false;
private static Camera camera;
@Override
public void onReceive(Context context, Intent intent) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.flash_widget);
if(isLightOn) {
views.setImageViewResource(R.id.button, R.drawable.ic_launcher);
} else {
views.setImageViewResource(R.id.button, R.drawable.ic_launcher);
}
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(new ComponentName(context, FlashlightWidgetProvider.class),
views);
if (isLightOn) {
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
isLightOn = false;
}
} else {
// Open the default i.e. the first rear facing camera.
camera = Camera.open();
if(camera == null) {
Toast.makeText(context, "Keine Kamera", Toast.LENGTH_SHORT).show();
} else {
// Set the torch flash mode
Parameters param = camera.getParameters();
param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
try {
camera.setParameters(param);
camera.startPreview();
isLightOn = true;
} catch (Exception e) {
Toast.makeText(context, "Keine Kamera", Toast.LENGTH_SHORT).show();
}
}
}
}
}
你解决了吗?
public class FlashlightWidgetReceiver extends BroadcastReceiver {
private static boolean isLightOn = false;
private static Camera camera;
@Override
public void onReceive(Context context, Intent intent) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.flash_widget);
if(isLightOn) {
views.setImageViewResource(R.id.button, R.drawable.ic_launcher);
} else {
views.setImageViewResource(R.id.button, R.drawable.ic_launcher);
}
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(new ComponentName(context, FlashlightWidgetProvider.class),
views);
if (isLightOn) {
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
isLightOn = false;
}
} else {
// Open the default i.e. the first rear facing camera.
camera = Camera.open();
if(camera == null) {
Toast.makeText(context, "Keine Kamera", Toast.LENGTH_SHORT).show();
} else {
// Set the torch flash mode
Parameters param = camera.getParameters();
param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
try {
camera.setParameters(param);
camera.startPreview();
isLightOn = true;
} catch (Exception e) {
Toast.makeText(context, "Keine Kamera", Toast.LENGTH_SHORT).show();
}
}
}
}
}