我一直在将视频分享到instagram故事中。为了下载文件,创建了一个异步任务并禁用了布局,但在下载时有些控件除外。在onPostExcute()中,我启用了布局并开始通过意图共享活动。尽管共享/取消共享后,UI仍被禁用。这是inn onPostExecute()中编写的代码。
@Override
protected void onPostExecute(String file_url) {
videoLoading.setVisibility(View.INVISIBLE);
layout.setEnabled(true);
Uri uri = Uri.parse(filePath);
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
String shareBody = presenter.getVideoName();
sharingIntent.setDataAndType(uri, "vide/mp4");
startActivity(Intent.createChooser(sharingIntent, "Share using"));
}
您是否正确声明了AsyncTask类?在构造函数中使用正确的Params数据类型以及doInBackground和onPostExecute。
并且,如果您只希望使用Instagram故事来处理您的意图,则可以这样做:
Intent shareIntent = new Intent("com.instagram.share.ADD_TO_STORY");
shareIntent.setDataAndType(fileUri,"video/*");
shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
if (shareIntent.resolveActivity(getPackageManager()) != null) {
startActivity(shareIntent);
}
(编辑)差点忘了:不要调用yourAsyncTaskInstance.doInBackground()
,否则onPostExecute()
将不会运行。而是调用yourAsyncTaskInstance.execute()
。它将允许AsyncTask的所有4个部分运行,即onPreExecute()
,doInBackground()
,onProgressUpdate()
和onPostExecute()
。如果没有,也许禁用onPreExecute
内部的视图。