2013-05-31 3 views
0

Android/Java noob здесь. У меня есть URL-адрес, который я обнаруживаю в другой части моего приложения. Я успешно передаю этот URL как строку в OnStartCommand службы намерения. Затем я хотел бы сделать эту строку, содержащую мой URL, доступной для HttpURLConnection, находящейся в потоке в OnHandleIntent, как показано ниже. Как я могу получить URL-адрес внутри строки myUrl в OnHandleIntent?Как передать строку из OnStartCommand в OnHandleIntent в IntentService?

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     String myUrl; 
     myUrl = intent.getExtras().getString("myUrl"); 

     return super.onStartCommand(intent, flags, startId); 
    } 

    @Override 
    protected void onHandleIntent(Intent intentNotify) { 
     try { 
       URL url = new URL("myUrl"); 
       HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
       readStream(con.getInputStream()); 
       } catch (Exception e) { 
       e.printStackTrace(); 
      } 
    } 

ответ

1

Вы не должны переопределять onStartCommand intenservice. Из javadoc for onStartCommand

Вы не должны переопределить этот метод для IntentService. Вместо этого переопределяет onHandleIntent (Intent), который система вызывает, когда IntentService получает запрос на запуск.

Есть ли причина, по которой вы не пытаетесь получить дополнительные услуги от намерения, переданного onHandleIntent, как показано ниже?

@Override 
protected void onHandleIntent(Intent intent) { 
    String myUrl = intent.getExtras().getString("myUrl"); 
+0

re: overriding onStartCommand это может быть ошибка noob. Я использовал методы source> override/implement, и вот как Eclipse вставил его. Что касается получения дополнительных функций внутри OnHandleIntent, когда я пытаюсь это Eclipse говорит, что «намерение не может быть разрешено». Я просмотрел кучу дискуссий о том, как передать строки в службу Intent, и единственным способом, с которым мне удалось работать до сих пор, - это получить их внутри OnStartCommand (или OnStart, который, как я полагаю, теперь устарел). –

+0

Проверьте имя параметра. Я назвал это «намерение», но в вашем исходном коде вы назвали его «intentNotify». Таким образом, ваш будет String myUrl = intentNotify.getExtras(). GetString ("myUrl"); –

+0

да! Это то, что я получаю для копирования и вставки другого намеренного сервиса, который я использовал ранее. Все еще учиться, но опечатки, подобные этому, по-прежнему слишком часто кусают меня. Большое спасибо за то, что нашли время ответить на мой вопрос. –

Смежные вопросы