package com.jasonchen.microlang.fragments;
import android.content.ContentResolver;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.widget.Toast;
import com.jasonchen.microlang.R;
import com.jasonchen.microlang.activitys.WriteWeiboActivity;
import com.jasonchen.microlang.tasks.MyAsyncTask;
import com.jasonchen.microlang.utils.Utility;
import com.jasonchen.microlang.utils.file.FileManager;
import com.jasonchen.microlang.utils.image.ImageUtility;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/**
* jasonchen
* 2015/04/10
*/
public class ConvertUriToCachePathAsyncTaskFragment extends Fragment {
private ConvertTask task;
public static ConvertUriToCachePathAsyncTaskFragment newInstance(Uri uri) {
ConvertUriToCachePathAsyncTaskFragment
fragment = new ConvertUriToCachePathAsyncTaskFragment();
Bundle bundle = new Bundle();
bundle.putParcelable("uri", uri);
fragment.setArguments(bundle);
fragment.setRetainInstance(true);
return fragment;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (task == null) {
task = new ConvertTask((Uri) getArguments().getParcelable("uri"));
task.executeOnExecutor(MyAsyncTask.THREAD_POOL_EXECUTOR);
}
}
private class ConvertTask extends MyAsyncTask<Void, Void, String> {
ContentResolver mContentResolver;
Uri uri;
public ConvertTask(Uri uri) {
this.uri = uri;
System.out.println("uri::::"+uri);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mContentResolver = getActivity().getContentResolver();
}
@Override
protected String doInBackground(Void... params) {
try {
InputStream inputStream = mContentResolver.openInputStream(uri);
String path = FileManager.getKKConvertPicTempFile();
if (TextUtils.isEmpty(path)) {
return null;
}
File file = new File(path);
file.getParentFile().mkdirs();
if (file.exists() || file.length() > 0) {
file.delete();
}
file.createNewFile();
Utility.copyFile(inputStream, file);
if (ImageUtility.isThisBitmapCanRead(path)) {
return path;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (getActivity() == null) {
return;
}
getFragmentManager().beginTransaction()
.remove(ConvertUriToCachePathAsyncTaskFragment.this)
.commitAllowingStateLoss();
if (TextUtils.isEmpty(s)) {
Toast.makeText(getActivity(),
getString(R.string.fetch_picture_from_other_apps_failed),
Toast.LENGTH_SHORT).show();
return;
}
WriteWeiboActivity activity = (WriteWeiboActivity) getActivity();
activity.picConvertSucceedKK(s);
}
}
}