1

我正在构建一个包含大量图像的应用程序,以用作使用图像共享选项的任何聊天客户端的替代图标。

编辑:我想出了如何从另一个应用程序(不是我的应用程序)启动我的应用程序,以便现在我可以在默认图库或我的应用程序之间进行选择以选择图像。

剩下的就是我需要知道图片库返回给调用它进行图像挑选的应用程序的确切内容,以便我可以从我的应用程序返回相同的东西。

编辑 3:我现在将 Intent 传递回聊天客户端

Uri imageURI;
    Intent shareIntent = new Intent();
    switch(v.getId()){
    case R.id.eric1 :
        imageURI = Uri.parse(MY_RESOURCE_URI);
        shareIntent.putExtra(Intent.EXTRA_STREAM, imageURI);
        shareIntent.setType("image/plain");
        setResult(RESULT_OK, shareIntent);
        Utils.makeToast("Selected",this);
        finish();

现在我收到一个共享文件失败的错误。是因为我试图将资源 URI 从我的包传递到另一个包吗?

编辑-终于以这种方式解决了

Bitmap image = BitmapFactory.decodeResource(getResources(), resID);
        File imageFile;
        Date d = new Date();
        int imgName = (Long.toString(d.getTime())).hashCode();
        String state = Environment.getExternalStorageState();
        printDebug(state);
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            File file = getExternalCacheDir();
            if (file != null) {
                try {
                    //String root = file.getAbsolutePath();
                    imageFile = new File(file, imgName+".png");
                    printDebug(imageFile.getAbsolutePath());
                    FileOutputStream stream = new FileOutputStream(imageFile);
                    boolean complete = image.compress(Bitmap.CompressFormat.PNG, 90, stream);
                    if (!complete) {
                        Log.d("tag", "image not saved");
                    }
                    Log.d("tag", "image saved");
                    return Uri.parse(imageFile.getAbsolutePath());
                } catch (IOException e) {
                    Log.d("tag", "Can't save image", e);
                }
            }
        }
        return null;
        }

谢谢您的帮助

4

1 回答 1

0

抱歉,我忘记将其发布为答案,但在这里-

Bitmap image = BitmapFactory.decodeResource(getResources(), resID);
    File imageFile;
    Date d = new Date();
    int imgName = (Long.toString(d.getTime())).hashCode();
    String state = Environment.getExternalStorageState();
    printDebug(state);
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        File file = getExternalCacheDir();
        if (file != null) {
            try {
                //String root = file.getAbsolutePath();
                imageFile = new File(file, imgName+".png");
                printDebug(imageFile.getAbsolutePath());
                FileOutputStream stream = new FileOutputStream(imageFile);
                boolean complete = image.compress(Bitmap.CompressFormat.PNG, 90, stream);
                if (!complete) {
                    Log.d("tag", "image not saved");
                }
                Log.d("tag", "image saved");
                return Uri.parse(imageFile.getAbsolutePath());
            } catch (IOException e) {
                Log.d("tag", "Can't save image", e);
            }
        }
    }
    return null;
    }
于 2014-03-31T19:13:27.290 回答