Не удается вставить снимок экрана в MediaStore - LIBGDX

Я снимаю экран, используя следующие функции. Все это работает, потому что потом я вижу изображение в Галерее, но когда я пытаюсь вставить сохраненное изображение в MediaStore, получаю ошибку FileNotFoundException:

public static String saveScreenshotNamePath(String name){
    try{
        FileHandle fh;
        fh = Gdx.files.external(name + ".png");
        Pixmap pixmap = getScreenshot(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
        PixmapIO.writePNG(fh, pixmap);
        pixmap.dispose();
        return fh.file().getAbsolutePath();
    }catch (Exception e){
        return "";
    }        
}

Я хочу загрузить это изображение в MediaStore с помощью функции ниже, но я получаю FileNotFoundException (у меня есть разрешения WRITE_EXTERNAL_STORAGE и READ_EXTERNAL_STORAGE в Android):

public void shareGoogleImage(int no_level, String path) {
    File tmpFile = new File(path);
    do{
        try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); }
    } while(!tmpFile.exists());
    String photoUri = "";

    try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); }

    try {
        photoUri = MediaStore.Images.Media.insertImage(getContentResolver(), tmpFile.getAbsolutePath(), null, null); 
    } catch (FileNotFoundException e1) { e1.printStackTrace(); }

    try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }

    Intent share = new PlusShare.Builder(this)
        .setText("See my latest Game Level " + Integer.toString(no_level) + " score")
        .setType("image/png")
        .setStream(Uri.parse(photoUri))
        .getIntent()
        .setPackage("com.google.android.apps.plus");
    startActivityForResult(share, 0);
}

Вот как я использую вышеупомянутые функции:

String pathto_screencap = ScreenshotFactory.saveScreenshotNamePath("google_share_image");
my_game.google_facebook_services.shareGoogleImage(hud_display.level_no, pathto_screencap);

Вот Logcat:

06-05 01:01:14.624: E/MediaStore(31555): Failed to insert image
06-05 01:01:14.624: E/MediaStore(31555): java.io.FileNotFoundException: No such file or directory
06-05 01:01:14.624: E/MediaStore(31555):    at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentProviderProxy.openAssetFile(ContentProviderNative.java:611)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:925)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentResolver.openOutputStream(ContentResolver.java:672)
06-05 01:01:14.624: E/MediaStore(31555):    at android.content.ContentResolver.openOutputStream(ContentResolver.java:648)
06-05 01:01:14.624: E/MediaStore(31555):    at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:923)
06-05 01:01:14.624: E/MediaStore(31555):    at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:846)
06-05 01:01:14.624: E/MediaStore(31555):    at com.mygame.android.AndroidLauncher.shareGoogleImage(AndroidLauncher.java:443)
06-05 01:01:14.624: E/MediaStore(31555):    at com.mygame.game._ex01MyGame.render(_ex01MyGame.java:1021)
06-05 01:01:14.624: E/MediaStore(31555):    at com.badlogic.gdx.Game.render(Game.java:46)

0 ответов

Другие вопросы по тегам