【问题标题】:Share files with appcelerator using android intent使用 android intent 与 appcelerator 共享文件
【发布时间】:2016-10-12 13:22:25
【问题描述】:

我尝试分享我下载的文件。我将该文件放在Ti.Filesystem.externalStorageDirectory 中。该文件已正确保存,因为我可以在 ImageView.image 中显示它。

这是我用来启动 android 共享意图的代码: (显然你不能在 android API 24 中使用 file:// 方案。见这篇文章:stackoverflow

filePath = filePath.replace('file','content');
var intent = Ti.Android.createIntent({
    action: Ti.Android.ACTION_SEND,
});
intent.putExtraUri(Ti.Android.EXTRA_STREAM, filePath);
$.FileList.activity.startActivity(intent);

发生的情况是,共享对话框打开,我选择了要共享到的应用程序,但随后我收到一条通知,没有可共享的内容。

失败通知的屏幕截图:

【问题讨论】:

    标签: android android-intent appcelerator


    【解决方案1】:

    试试这个:

    var Blob = $.container.toImage();
    var file = Ti.Filesystem.getFile(Titanium.Filesystem.externalStorageDirectory, 'image_1.png');
    f.write(Blob);
    
    
    /// NOT HERE --filePath = filePath.replace('file','content');
    var intent = Ti.Android.createIntent({
        action: Ti.Android.ACTION_SEND
    });
    intent.putExtraUri(Ti.Android.EXTRA_STREAM, f.filePath);
    ////$.FileList.activity.startActivity(intent);
    Ti.Android.currentActivity.startActivity(intent);
    

    【讨论】:

      【解决方案2】:

      其实很简单:

      1. appcelerator 自己处理文件路径,因此不需要将 file 替换为 content
      2. intent 需要一个类型参数。

      工作代码是:

      var intent = Ti.Android.createIntent({
        action: Ti.Android.ACTION_SEND,
        type: '*/*'
      });
      intent.putExtraUri(Ti.Android.EXTRA_STREAM, filePath);
      $.FileList.activity.startActivity(intent);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-18
        • 2021-11-16
        相关资源
        最近更新 更多