这就是我在android中的asstes文件夹的样子。我正试图通往内部资产的“19.png”。我将在文件创建中使用此路径,如new File("pathTo19.png")
中所示。我尝试了"android/assets/19.png"
,"assets/19.png"
等的变体,但都没有效果。 libgdx项目中assets文件夹的路径是什么?
"file:/data/19.png"
。
FileHandle fh = Gdx.files.internal("data/19.png");
Intent sendIntent1 = new Intent(Intent.ACTION_SEND);
try {
sendIntent1.setType("text/x-vcard");
sendIntent1.putExtra("address","0475223091");
sendIntent1.putExtra("sms_body","hello..");
sendIntent1.putExtra(Intent.EXTRA_STREAM,
Uri.parse(fh.file().toURI().toURL().toString()));
System.out.println(fh.file().toURI().toURL().toString());
}
catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
context.startActivity(sendIntent1);
答案 0 :(得分:2)
这很有效。所有的欢呼Tenfour04!
FileHandle from = Gdx.files.internal("19.png");
from.copyTo(Gdx.files.external("19.png"));
FileHandle ext = Gdx.files.external("19.png");
Intent sendIntent1 = new Intent(Intent.ACTION_SEND);
try {
sendIntent1.setType("image/png");
sendIntent1.putExtra("address","0475223091");
sendIntent1.putExtra("sms_body","hello..");
sendIntent1.putExtra(Intent.EXTRA_STREAM,
Uri.parse(ext.file().toURI().toURL().toString()));
}
catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
context.startActivity(sendIntent1);
答案 1 :(得分:0)
好吧,我不知道这是否会有所帮助,但您可以尝试获取主类的位置,然后添加所需文件的名称和类型。 您必须将图像放在与主类相同的包中。 创建一个名为loadImageFrom(或任何你想要的)的新类,并在其中添加此代码:
public static BufferedImage LoadImageFrom(Class<?> classfile, String path) {
URL url = classfile.getResource(path);
BufferedImage img = null;
try{
img = ImageIO.read(url);
}catch(IOException e) {
e.printStackTrace();
}
return img;
}
然后通过以下方式获取图像:
loadImageFrom.LoadImageFrom(YourMainClassNameHere.class, "YourImageNameHere.YourImageTypeHere")
例如:
g.drawImage(loadImageFrom.LoadImageFrom(Main.class, "playersheet.png"), locationX, locationY, width, height, imageobserver);
如果这没有用,我很抱歉。这来自我的PC游戏代码,但我认为它也适用于Android。
(这适用于任何事物:纹理,只是HUD,GUI,基本上任何东西)
答案 2 :(得分:0)
简单地说,这取决于你想如何使用android资产文件。如果要在纹理中添加它,请使用以下方法:
Texture texture = new Texture("19.png")
如果您想将assets文件夹中的文件用于其他用途,例如audio或freeType,您可以使用:
FileHandle fh = Gdx.files.internal("data/my_music.mp3");
正如您所看到的,它指向data
文件夹。
编辑: 好!看来你的问题与libgdx无关,只在Android项目中。所以请删除libgdx标签。对于您的问题,在Assets文件夹中共享图像的唯一方法是使用在此问题中询问过的ContentProvider: android share images from assets folder
答案 3 :(得分:0)
资产目录的uri是
file:///android_asset/
Libgdx不会返回内部,外部或本地Android文件的绝对路径(因为Android不会)。