从Intent服务中打开一个intent

时间:2016-08-31 19:31:20

标签: android android-intent

我正在尝试从意图服务

执行此代码
  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. 通过调用Intent服务
  3. 来下载文件
  4. 当文件结束下载和服务完成时,我需要触发此功能并更新文件列表视图
  5. 但我现在仍然坚持这个错误,任何想法?

3 个答案:

答案 0 :(得分:0)

根据https://developer.android.com/training/run-background-service/report-status.html

如果要从IntentService向其他组件发送数据,请使用broadcastManager通过Intent发送捆绑数据,并在组件上启用broadcastReceiver以检索它们。

答案 1 :(得分:0)

只需使用getApplication()。startActivity(Intent.createChooser(intent,“Open folder”));

答案 2 :(得分:0)

您无法从意向服务中打开对话框。要做到这一点,你可以打算开始一个活动,把它放在一个半透明的主题,并显示你的AlertDialog。