我正在尝试简单地将一个简单的XML文件写入SD卡,我注意到我的Nexus 4确实写了该文件,但是使用Windows 7无法通过MTP协议查看.
码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
CustomerQueryRqType customerQueryRequest = new CustomerQueryRqType();
Serializer serializer = new Persister();
File myFile = new File(Environment.getExternalStorageDirectory() + "/customerQueryRequest.xml");
try {
boolean created = myFile.createNewFile();
serializer.write(customerQueryRequest, myFile);
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Astro文件管理器在手机上看到该文件:
但Windows没有看到它......:
adb shell 在目录中显示:
ls -l
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 Alarms
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 Android
drwxrwxr-x root sdcard_rw 2012-11-21 19:30 DCIM
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 Download
drwxrwxr-x root sdcard_rw 1970-01-16 20:51 …Run Code Online (Sandbox Code Playgroud) 我将图像添加到SDCARD上的文件夹中.由于图像和我的文件夹在图库中没有立即可见,我试图让MediaScannerConnection更新并在图库中显示文件夹/图像.这对我来说不是很好,因为Gallery中没有任何内容.我只在Eclipse AVD中测试.
我没有看到很多关于这个的讨论,因为scanFile是自api8以来的新功能.有人能说明这是怎么做的吗?
我在服务和Activity中尝试它但在onScanCompleted时继续获得uri = null.
我的应用程序允许用户将图像保存到SD卡.但是我不知道如何卸下并重新安装SD卡之前如何让它出现在画廊中.我已经用Google搜索了几天这个问题,但我不确定如何让它自动出现.我找到了 这个链接,但我不确定如何使用该类.这是我用来保存文件.在try catch块的底部是我想要扫描sd卡以获取新媒体的地方.
FileOutputStream outStream = null;
File file = new File(dirPath, fileName);
try {
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
} catch {
...
}
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我正确的方向,我将不胜感激.
我在sdcard上创建文件夹和文件时遇到问题.
这是代码:
File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString() + "/folder");
boolean success;
if (!folder.exists()) {
success = folder.mkdirs();
}
File obdt = new File(folder, "file.txt");
try {
success = obdt.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,我希望在SD卡的文件夹folder中创建该文件Download夹,并在此文件中file.我希望用户可以访问该文件.所以我想把它放在一个共享文件夹中.
该success变量是true,当我再次运行该代码的文件夹已经存在,并且犯规进来,如果块.
但我无法在文件资源管理器中的SD卡上看到创建的文件夹和文件.
信息:getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString()退货storage/sdcard/Download
我和Galaxy Nexus一起工作.
重命名应用程序触发的文件之类的更改仅在重新启动Android设备后显示在USB-MTP界面上,或者在MediaScanner上注册新文件之后(请参阅特定路径(文件夹)上的触发媒体扫描程序),如何操作?):
file.renameTo(newFile);
MediaScannerConnection.scanFile(context,
new String[] { newFile.getAbsolutePath() }, null, null);
Run Code Online (Sandbox Code Playgroud)
USB-MTP用于通过USB访问Android设备的存储.例如,使用Windows资源管理器.
但是,使用Android 5.0.2(Build 10.6.A.0.454)下的Sony XPERIA Tablet Z(SGP321)文件夹newFile将成为一个4KB的文件.我不再能够使用Windows资源管理器访问文件夹结构,也无法将文件复制到我的计算机上.即使重启平板电脑!Android 4.4.4的相同设备不显示该行为.似乎只有USB-MTP视图被破坏.Android应用程序访问的文件结构看起来还不错.
问题:这种行为是错误还是我错误地实现了?什么是正确的实施?
到目前为止我为解决这个问题尝试了什么:
scanFile使用目录.MediaScannerConnection#scanFile.重启后,我可以再次使用Windows资源管理器访问该目录./sf/answers/1534265981/ 中建议的这一行不刷新USB-MTP视图,但也不会将目录转换为文件:
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(newFile.getParentFile()));
Run Code Online (Sandbox Code Playgroud)也许相关:
android android-mediascanner sony-xperia android-5.0-lollipop
我正在尝试将屏幕截图保存到设备的图库中.它工作正常,但它不会出现在画廊中.
这就是我的工作
selfie= new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
selfie.ReadPixels(new Rect(0, 0,Screen.width, Screen.height), 0, 0,false);
selfie.Apply ();
byte[] bytes = selfie.EncodeToPNG();
string filename = "Screenshot.png";
fileLocation = Path.Combine( Application.persistentDataPath, filename );
File.WriteAllBytes(fileLocation, bytes );
string myFolderLocation = "/mnt/sdcard/DCIM/Camera/";
myScreenshotLocation = myFolderLocation + filename;
System.IO.File.Move(fileLocation, myScreenshotLocation);
Run Code Online (Sandbox Code Playgroud)
它将图像保存在正确的位置.如果我在SD卡上查找,它就在那里.但是在画廊里却没有露面.所以我在File.move之后尝试了这个,刷新了库.
//REFRESHING THE ANDROID PHONE PHOTO GALLERY IS BEGUN
AndroidJavaClass classPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject objActivity = classPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaClass classUri = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject objIntent = new AndroidJavaObject("android.content.Intent", new object[2]{"android.intent.action.MEDIA_MOUNTED", classUri.CallStatic<AndroidJavaObject>("parse", "file://" + myScreenshotLocation)});
objActivity.Call ("sendBroadcast", …Run Code Online (Sandbox Code Playgroud) 我想将照片添加到MediaStore,以便Gallery应用程序可以找到它们(无需重新启动设备).App的min sdk是9.任何帮助,博客或文档赞赏.
有没有办法在Api等级7上获得DCIM路径(可能在SD卡或设备上)?Environment.DIRECTORY_DCIM仅在api level 8中可用
android ×8
gallery ×2
sd-card ×2
createfile ×1
directory ×1
file ×1
ios ×1
media ×1
mtp ×1
nexus-4 ×1
screenshot ×1
sony-xperia ×1
usb-drive ×1