使用 android 意图与 appcelerator 共享文件

Share files with appcelerator using android intent

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

中显示它

这是我用来启动 android 分享意图的代码: (显然你不能将 file:// 方案与 android API 24 一起使用。请参阅此 post:Whosebug

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);

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

通知失败截图:

试试这个:

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);

其实很简单:

  1. appcelerator 自己处理filePath,所以没必要用content
  2. 替换file
  3. 意图需要一个类型参数。

工作代码为:

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