【问题标题】:OnActivityResult() is not working after selecting file drom dropbox chooser从保管箱选择器中选择文件后,OnActivityResult() 不起作用
【发布时间】:2016-01-16 19:58:54
【问题描述】:

我正在尝试在 Android 应用中使用 Dropbox Chooser Api 来允许用户从 Dropbox 中选择文件。我能够从片段成功启动 Dropbox 选择器,但在选择文件后,它显示“正在创建链接...”,然后返回片段。我已经重写了 onActivityresult() 方法来获取有关所选文件的信息。但是,不幸的是,onActivityresult() 没有被调用,我无法使用下载管理器下载所选文件。

videos_fragment.java

   @Override
   public void super.onActivityResult(int requestCode, int resultCode, Intent data){
    if (requestCode == DBX_CHOOSER_REQUEST){
        if (resultCode == Activity.RESULT_OK){
            DbxChooser.Result result = new DbxChooser.Result(data);

            Log.i("main", "Link to selected file: " + result.getLink());

            // Handle the result
            Toast.makeText(getContext(),"Successful",Toast.LENGTH_LONG).show();

            DownloadManager.Request request = new DownloadManager.Request(result.getLink());
            request.setDescription("Downloading from App");
            request.setTitle("Downloading..");
            // in order for this if to run, you must use the android 3.2 to compile your app
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
            }


     // get download service and enqueue file
            DownloadManager manager = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
            manager.enqueue(request);
        }
        else {
            Toast.makeText(getContext(),"Error connecting Dropbox",Toast.LENGTH_LONG).show();
        }
    }
    else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

打开 Dropbox 对话框的代码

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    myView = inflater.inflate(R.layout.videos_layout,container,false);
    mChooser = new DbxChooser("APP_KEY");
    mchooser_button= (Button)myView.findViewById(R.id.chooser_button);
    mchooser_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mChooser.forResultType(DbxChooser.ResultType.DIRECT_LINK).launch(getActivity(),DBX_CHOOSER_REQUEST);
        }
    });
    return myView;
}

【问题讨论】:

  • 您可以发布您编写的代码以打开 DropBox 文件选择器对话框吗?
  • @FunkSoulBrother 我已在说明中添加。
  • 您应该尝试在连接到计算机的真实设备上运行代码并查看 LogCat 输出以查看是否有任何问题。您是否已向 Manifest 文件添加了所需的权限?您是否尝试过运行 DropBox 示例文件选择器示例并将代码与您的代码进行比较?
  • @logcat 我使用的是保管箱选择器而不是相机意图 + 我的代码中没有 startActivityResult 命令。我搜索了整个 stackoverflow,然后发布了我的问题。

标签: android dropbox android-download-manager


【解决方案1】:

您必须将<uses-permission android:name="android.permission.INTERNET"></uses-permission> 添加到您的清单文件(取自https://www.dropbox.com/developers-v1/core/sdks/android)。

如果您打算下载文件 - 您应该考虑将文件写入的位置并按照http://developer.android.com/training/basics/data-storage/files.html 添加适当的权限。

祝你好运!

【讨论】:

  • 我想您已经按照 DropBox 开发者支持网站上的说明进行操作,因此我建议您在另一台设备上尝试该代码,尝试新的 API_KEY,并检查可能导致运行 DropBox 出现问题的依赖项。跨度>
【解决方案2】:

终于解决了!!!

我需要做的就是在 mainactivity 类中而不是在片段 java 中编写 OnActivityResult 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多