kitkat上的android应用程序问题
我创建了小部件,它在所有android操作系统上都能正常工作,但在kitkat上,当我第一次将小部件移动到主屏幕时,我的自定义数据出现,然后在一秒钟后突然消失。我需要你的帮助 研究 1:我们使用onEnable函数处理首次在屏幕上显示小部件的情况。 2:OnEnable在kitkat上工作准确,但一秒钟后就会丢失数据 我的代码kitkat上的android应用程序问题,android,widget,android-4.4-kitkat,Android,Widget,Android 4.4 Kitkat,我创建了小部件,它在所有android操作系统上都能正常工作,但在kitkat上,当我第一次将小部件移动到主屏幕时,我的自定义数据出现,然后在一秒钟后突然消失。我需要你的帮助 研究 1:我们使用onEnable函数处理首次在屏幕上显示小部件的情况。 2:OnEnable在kitkat上工作准确,但一秒钟后就会丢失数据 我的代码 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager,
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
{
// Get all ids
ComponentName thisWidget = new ComponentName(context,
MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {
// create some random data
int number = (new Random().nextInt(100));
remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
appwidget=appWidgetManager;
// Set the text
remoteViews.setOnClickPendingIntent(R.id.imagechecked,
getPendingSelfIntent(context, MyOnClick));
Intent intent = new Intent(context, MyWidgetProvider.class);
intent.putExtra(appwidget.EXTRA_APPWIDGET_ID, appWidgetIds);
intent.setAction(appwidget.ACTION_APPWIDGET_UPDATE);
intent.setAction(SHOW_POPUP_DIALOG_ACTION);
context.sendBroadcast(intent);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
@Override
public void onEnabled(Context context){
//After after 3 seconds
context.startService(new Intent(context, FirstService.class));
}
}
FirstService.java
public class FirstService extends Service {
WindowManager mWindowManager;
BroadcastReceiver mReceiver;
private static LayoutInflater mInflater=null;
View mView;
@Override
public void onCreate() {
super.onCreate();
/*IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
mReceiver = new IncomingSms();
registerReceiver(mReceiver, filter);*/
Intent intent = new Intent(this, IncomingSms.class);
intent.putExtra("appcall","ok");
sendBroadcast(intent);
}
@Override
public void onDestroy() {
unregisterReceiver(mReceiver);
Log.e("onDestroy Recie", "Called");
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
IncomingSms.java
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
newprovider = new MyWidgetProvider();
counterdata=0;
check_images_visibility=0;
prefs = context.getSharedPreferences(MyPREFERENCES, context.MODE_PRIVATE);
sharedpreferences = context.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
buttonclick=0;
String messagecheck = intent.getStringExtra("appcall");
Log.d("LocalBroadcastManager", "foo : " + message);
if(messagecheck!=null)
{
counterdata=0;
restoremessage = prefs.getInt("restoremessage",0);
if(restoremessage<3)
updateWidgetPictureAndButtonListener(context);
}
//Toast.makeText(context, "Action: ", Toast.LENGTH_SHORT).show();
try {
if (bundle != null) {
pdusObj = (Object[]) bundle.get("pdus");
if(pdusObj!=null) {
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String senderNum = phoneNumber;
message = currentMessage.getDisplayMessageBody();
int duration = Toast.LENGTH_LONG;
//Toast toast = Toast.makeText(context, "senderNum: " + senderNum + ", message: " + message, duration);
//Toast.makeText(context, "Action: " + intent.getAction(), Toast.LENGTH_SHORT).show();
//toast.show();
restoredText = prefs.getInt("text", 0);
restoremessage = prefs.getInt("restoremessage", 0);
message_nospace = message.replace(" ", "");
/*if (message_nospace.startsWith("Order")) {
SharedPreferences.Editor editor = sharedpreferences.edit();
//restoredText = restoredText + 1;
restoremessage = restoremessage + 1;
editor.putString(storemessages + restoremessage, message);
editor.putInt(color_backgroung_widget + restoremessage, prefs.getInt(color_backgroung_data + restoredText, 0));
editor.putInt("restoremessage", restoremessage);
editor.commit();
newprovider.setQq(message);
//restoredText=0;
updateWidgetPictureAndButtonListener(context);
} else {*/
counterdata = 2;
// }
for (int counterdatanew = 1; counterdatanew <= restoredText; counterdatanew++) {
// prefs.getString(enterdata+counterdata,0);
String data = prefs.getString(enterdata + counterdatanew, null);
if (message_nospace.startsWith(prefs.getString(enterdata + counterdatanew, null)) && !message_nospace.equals("Notworking") && !message.equals("No new Task")) {
newprovider.setQq(message);
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd:MMMM HH:mm ");
strDate = sdf.format(c.getTime());
SharedPreferences.Editor editor = sharedpreferences.edit();
//restoredText = restoredText + 1;
restoremessage = restoremessage + 1;
editor.putString(storemessages + restoremessage, message);
int datacheck = prefs.getInt(color_backgroung_data + counterdatanew, 0);
editor.putInt(color_backgroung_widget + restoremessage, prefs.getInt(color_backgroung_data + counterdatanew, 0));
editor.putInt("restoremessage", restoremessage);
editor.putString(time_message + restoremessage, strDate);
editor.commit();
counterdatanew = restoredText + 1;
counterdata = 0;
updateWidgetPictureAndButtonListener(context);
}
}
//if (intent.getAction().equals(WidgetUtils.WIDGET_UPDATE_ACTION)) {
//}
//Intent intent11 = new Intent(context,MainActivity.class);
//intent11.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//context.startActivity(intent11);
} // end for loop
}
} // bundle is null
int duration = Toast.LENGTH_LONG;
// Toast toast = Toast.makeText(context, "senderNum: " + ", message: " + message, duration);
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" + e);
}
public void onReceive(上下文、意图){
//从意图检索扩展数据的映射。
final Bundle=intent.getExtras();
newprovider=新的MyWidgetProvider();
计数器数据=0;
检查\u图像\u可见性=0;
prefs=context.getSharedReferences(MyPREFERENCES,context.MODE\u PRIVATE);
SharedReferences=context.getSharedReferences(MyPREFERENCES,context.MODE\u PRIVATE);
buttonclick=0;
String messagecheck=intent.getStringExtra(“appcall”);
Log.d(“LocalBroadcastManager”,“foo:+message”);
if(messagecheck!=null)
{
计数器数据=0;
restoremessage=prefs.getInt(“restoremessage”,0);
如果(恢复消息)