공유 환경 설정없이 재부팅 한 후 응용 프로그램 1 * 1 위젯을 유지하는 방법, 이미지 뷰의 이미지는이은 내가 위젯의 1 * 1 개 widget.The 레이아웃 이미지 뷰가 포함되어 만든
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.layout_appwidget_small);
Intent defineIntent = new Intent(context, MainActivity.class);
defineIntent.putExtra("from_widget", true);
PendingIntent pendingIntent1;
views.setImageViewResource(R.id.img_widget,R.drawable.ic_launcher);
defineIntent.putExtra("type_from_widget", 1);
pendingIntent1 = PendingIntent.getActivity(context, 0, defineIntent, 0);
views.setOnClickPendingIntent(R.id.img_widget, pendingIntent1);
appWidgetManager.updateAppWidget(intExtra, views);
처럼 설정 하지만 ConfigurationActivity의 일부 조건을 확인하여 ImageView의 이미지를 선택합니다. 위젯의 세부 정보를 AppWidgetId와 공유 환경 설정에 저장하고 재부팅 한 후에 유지 관리하는 데 몇 초가 걸립니다. 앱 데이터가 지워진 후 기기를 재부팅 할 때 또 다른 주요 이유 위젯이 비워집니다.
데이터가 공유 환경 설정에 저장됩니다. 내가 공유 환경 설정에서 세부 사항을 저장하지 않고 위젯 이미지를 유지해야 내 위젯
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent.getBooleanExtra("from_config_activity",false)){
for (int mAppWidgetId : intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS)) {
update(mAppWidgetId,intent.getIntExtra("image_id",0));
}
}
if(intent.getBooleanExtra("switch_on",false)){
AppWidgetManager appWidgetManager = AppWidgetManager
.getInstance(context);
SharedPreferences settings = context.getSharedPreferences("prefs", 0);
if(settings != null) {
Gson gson = new Gson();
String json = settings.getString("widget_arraylist", null);
Type type = new TypeToken<ArrayList<WidgetBean>>() {}.getType();
MainActivity.widgetBeanArrayList = gson.fromJson(json, type);
if(MainActivity.widgetBeanArrayList!=null) {
if (MainActivity.widgetBeanArrayList.size() > 0){
for(int i = 0;i < MainActivity.widgetBeanArrayList.size();i++){
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.layout_appwidget_small);
if(MainActivity.widgetBeanArrayList.get(i).icon == 1) {
views.setImageViewResource(R.id.img_widget, R.drawable.feed_detail_share);
}else if(MainActivity.widgetBeanArrayList.get(i).icon == 2){
views.setImageViewResource(R.id.img_widget, R.drawable.feed_detail_edit);
}else if(MainActivity.widgetBeanArrayList.get(i).icon == 3){
views.setImageViewResource(R.id.img_widget, R.drawable.feed_list_audio);
}
Intent defineIntent = new Intent(context, MainActivity.class);
defineIntent.putExtra("from_widget", true);
PendingIntent pendingIntent1 = PendingIntent.getActivity(context, 0, defineIntent, 0);
views.setOnClickPendingIntent(R.id.img_widget, pendingIntent1);
appWidgetManager.updateAppWidget(MainActivity.widgetBeanArrayList.get(i).id, views);
}
}
}
}else{
Log.d("tag", "=============settingd=====null===");
}
}
의 AppWidgetProvider 클래스의 onReceive 방법을 검색하고 유지
SharedPreferences prefs = context.getSharedPreferences("prefs", 0);
SharedPreferences.Editor edit = prefs.edit();
Gson gson = new Gson();
String json = gson.toJson(MainActivity.widgetBeanArrayList);
edit.putString("widget_arraylist", json);
edit.commit();
. 제안 사항이 있으십니까?
미리 감사드립니다.