0

こんにちは私はAndroidを初めて使用し、共有インテントを使用して画像を共有する必要があります。そのために私は次のAsyncTaskを使用します。

public class ShareImageTask extends AsyncTask<String, String, String> {
    private Context context;
    private ProgressDialog pDialog;
    String image_url;
    URL myFileUrl;

    String myFileUrl1;
    Bitmap bmImg = null;
    Intent share;
    File file;

    public ShareImageTask(Context context) {
        this.context = context;
    }

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub

        super.onPreExecute();

        pDialog = new ProgressDialog(context);
        pDialog.setMessage("Downloading Image ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();

    }

    @Override
    protected String doInBackground(String... args) {
        // TODO Auto-generated method stub

        try {

            myFileUrl = new URL(args[0]);
            HttpURLConnection conn = (HttpURLConnection) myFileUrl
                    .openConnection();
            conn.setDoInput(true);
            conn.connect();
            InputStream is = conn.getInputStream();
            bmImg = BitmapFactory.decodeStream(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {

            String path = myFileUrl.getPath();
            String idStr = path.substring(path.lastIndexOf('/') + 1);
            File filepath = Environment.getExternalStorageDirectory();
            File dir = new File(filepath.getAbsolutePath()
                    + "/Google Image Wallpaper/");
            dir.mkdirs();
            String fileName = idStr;
            file = new File(dir, fileName);
            FileOutputStream fos = new FileOutputStream(file);
            bmImg.compress(CompressFormat.JPEG, 75, fos);
            fos.flush();
            fos.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String args) {
        // TODO Auto-generated method stub
        pDialog.dismiss();
        share = new Intent(Intent.ACTION_SEND);
        share.setType("image/jpeg");

        share.putExtra(Intent.EXTRA_STREAM, file);

        startActivity(Intent.createChooser(share, "Share Image"));

    }

}

次に、画像のURLを渡してこのShareImageTaskを呼び出す必要があります。しかし、私はこれを呼び出す方法がわかりません???

例えば ​​:-

String Imageurl="my imageurl";
new ShareImageTask(Imageurl).execute();  
4

4 に答える 4

1

あなたは次のように呼ぶことができますShareImageTask

String Imageurl="my imageurl";
new ShareImageTask(Curent_Activity.this).execute(Imageurl);  

onPostExecuteInコードを次のように変更します。

@Override
protected void onPostExecute(String args) {
    // TODO Auto-generated method stub
    pDialog.dismiss();
    share = new Intent(Intent.ACTION_SEND);
    share.setType("image/jpeg");

    share.putExtra(Intent.EXTRA_STREAM,Uri.parse(file.getAbsolutePath().toString()));

    context.startActivity(Intent.createChooser(share, "Share Image"));

}
于 2012-12-20T07:20:57.107 に答える
0

単にこのようにしてください。

ShareImageTask task = new ShareImageTask();
task.execute(Imageurl);
于 2012-12-20T07:19:20.133 に答える
0

コードの一部を変更する必要があります。

あなたはこのように書いた

new ShareImageTask(Imageurl).execute();  

しかし、あなたはこのように書かなければなりません

new ShareImageTask(getApplicationContext()).execute(Imageurl);  

creatコンストラクターはContextパラメーターのみを使用するため、インティライズするときにContextのみを渡す必要がありますShareImageTask class

以下のコードのように:

クラス定義:

public ShareImageTask(Context context) {
        this.context = context;
    }

クラスは初期化します。

new ShareImageTask(getApplicationContext());
于 2012-12-20T07:20:51.553 に答える
0

AsyncTaskコンストラクターを次のように変更します

public ShareImageTask(Context context,String image_url) {
        this.context = context;
        this.image_url = image_url;
}

だから、あなたはこのように呼び出すことができます

String Imageurl="my imageurl";
new ShareImageTask(getApplicationContext(),Imageurl).execute();
于 2012-12-20T07:17:07.780 に答える