Android 广播接收机中的错误

Android 广播接收机中的错误,android,Android,我的申请有错误。。。 活动中的代码 SharedPreferences settings = getPreferences(Context.MODE_PRIVATE); String nastrPreferences = settings.getString(PREF_ACCOUNT_NAME, null); startService(new Intent(this, ServiceUpdate.class).putExtra("preferences", nas

我的申请有错误。。。 活动中的代码

SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
        String nastrPreferences = settings.getString(PREF_ACCOUNT_NAME, null);
        startService(new Intent(this, ServiceUpdate.class).putExtra("preferences", nastrPreferences));
在活动中,我运行我的服务。我输入了意向“偏好” 在服务中,我获得“首选项”并输入意图,然后在广播接收器中传输

服务更新

package com.example.ok1;

import...
public class ServiceUpdate extends Service {

final String Tag="States";

//*******************Google*********************
    private static final Level LOGGING_LEVEL = Level.OFF;
    com.google.api.services.tasks.Tasks client;
    private static final String PREF_ACCOUNT_NAME = "accountName";

    static final String TAG = "TasksSample";

    static final int REQUEST_GOOGLE_PLAY_SERVICES = 0;

    static final int REQUEST_AUTHORIZATION = 1;

    static final int REQUEST_ACCOUNT_PICKER = 2;

    final HttpTransport transport = AndroidHttp.newCompatibleTransport();

    final JsonFactory jsonFactory = new GsonFactory();

    GoogleAccountCredential credential;

    List<String> tasksList;
    List<String> tasksList_Note;
    List<String> result_Date;
    final String ATTRIBUTE_TITLE_TEXT="title";
    final String ATTRIBUTE_NOTE_TEXT="note";
    final String ATTRIBUTE_DATE_TEXT="date";
    static String preferences;
    DBHelper dbHelper;

    static com.google.api.services.tasks.Tasks service;

    int numAsyncTasks;



    //***********************************************8

    public static final int INTERVAL = 100000; // 10 sec
      public static final int FIRST_RUN = 5000; // 5 seconds
      int REQUEST_CODE = 11223344;

      AlarmManager alarmManager;

@Override
public void onCreate() {
    // TODO: действия, которые будут выполняться при создании сервиса

    Log.d(Tag, "onStartCommand");
}

public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(Tag, "onCreate");
    someTask();
    return START_REDELIVER_INTENT;
  }

public void onDestroy() {
  }

@Override
public IBinder onBind(Intent arg0) {
    // TODO Привязка сервиса

    return null;
}

void someTask() {
    //************перезапускать сервис буду тут************
    Intent intent = new Intent(this, RepeatingAlarmService.class);
    intent.putExtra("preferences", preferences);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0);

    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    if (alarmManager != null) {
          alarmManager.cancel(PendingIntent.getBroadcast(this, REQUEST_CODE, intent, 0));
        }
        Toast.makeText(this, "Service Stopped!", Toast.LENGTH_LONG).show();
        Log.d(Tag, "Service onDestroy(). Stop AlarmManager at " + new java.sql.Timestamp(System.currentTimeMillis()).toString());
    alarmManager.setRepeating(
        AlarmManager.ELAPSED_REALTIME_WAKEUP,
        SystemClock.elapsedRealtime() + FIRST_RUN,
        INTERVAL,
        pendingIntent);

    Toast.makeText(this, "Service Started.", Toast.LENGTH_LONG).show();
    Log.v(this.getClass().getName(), "AlarmManger started at " + new java.sql.Timestamp(System.currentTimeMillis()).toString());

  }
我得到preferences=null。意图没有“偏好”。为什么?我不正确的地方是什么? 日志


当您获得PendingEvent时,分配一个唯一的请求代码:

PendingIntent.getBroadcast(context, REQUEST_CODE , showIntent, 0); 
这样,您就可以向系统注册不同/唯一的意图实例

请求_代码是唯一的,您应该在当前系统时间输入它

int REQUEST_CODE = (int) System.currentTimeMillis();

您忘记为
ServiceUpdate
中的
首选项
字符串赋值。在调用
someTask()
方法之前,您需要在服务的
onStartCommand
方法中从Intent获取值:

public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(Tag, "onCreate");
    preferences= intent.getStringExtra("preferences"); //<<<<
    someTask();
    return START_REDELIVER_INTENT;
  }
public int-onstart命令(Intent-Intent、int-flags、int-startId){
Log.d(标记为“onCreate”);

preferences=intent.getStringExtra(“preferences”);//我尝试了“preferences=null”get error“从主线程调用此函数可能导致死锁和/或ANR”,在
code
List tasks=service.tasks().List(@default”).execute().getItems()行中
code
@ejdhddejdd:那么您还有其他问题,请显示logcat结果以获取更多信息help@ejdhddejdhdd:我认为
List tasks=service.tasks().List(@default”).execute().getItems()
您正试图执行Asyctask?这就是为什么会出现错误,所以请使用服务或线程来执行您希望在Asyctask中执行的任务
PendingIntent.getBroadcast(context, REQUEST_CODE , showIntent, 0); 
int REQUEST_CODE = (int) System.currentTimeMillis();
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(Tag, "onCreate");
    preferences= intent.getStringExtra("preferences"); //<<<<
    someTask();
    return START_REDELIVER_INTENT;
  }