2016-08-31 6 views
0

Я пытаюсь выполнить этот код из умысел службыоткрыть умысел внутри Намерение службы

public void showAlertDialog(String title, CharSequence message) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    if (title != null) builder.setTitle(title); 
    builder.setMessage(message); 
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      //Helper.OpenFile(sharing_download.this,DownloadedFilePath + "test.pdf"); 
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      Uri uri = Uri.parse(DownloadFolderPath); 
      intent.setDataAndType(uri, "*/*"); 
      startActivity(Intent.createChooser(intent, "Open folder")); 
     } 
    }); 
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      return; 
     } 
    }); 
    builder.show(); 
} 

Хотя я получаю следующее сообщение об ошибке:

Unable to add window -- token null is not for an application 

Я понимаю, что причина потому что мы не можем открыть Activity из службы намерения, хотя мне нужно вызвать эту функцию, так как моя логика заключается в следующем:

  1. Пользователя скачать файл
  2. файл скачанного путем вызова Намерения службы
  3. когда конец файла загрузке и окончанию службы, мне нужно, чтобы вызвать эту функцию и обновить вид списка файлов

Но я Я застрял с этой ошибкой, любая идея?

+0

Да, вы можете начать «Активность» из «IntentService», хотя обычно это невежливо. Ваш код предназначен для 'AlertDialog', а не' Activity', и вы не можете показать «AlertDialog» из «IntentService». – CommonsWare

+0

Я хочу спросить пользователя, хочет ли он перейти к папке загрузки, что мне делать? кроме создания активности и ввода двух кнопок и вызова этой активности – Sora

+2

Я бы поднял «Уведомление», которое ведет к активности (или имеет два действия, соответствующие вашим двум кнопкам). Вы не знаете, что делает пользователь на переднем плане, когда ваш «IntentService» добирается до этого момента. – CommonsWare

ответ

0

Просто используйте getApplication(). StartActivity (Intent.createChooser (намерение, «Открыть папку»));

0

Вы не можете открыть диалоговое окно с запросом и запросом. для этого вы можете начать свою деятельность, поставить ее в полупрозрачную тему и показать свой AlertDialog.

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