【Android学习】真机获取SD卡遇到的问题

storage/emulated/0遇到了问题。之前学习android大都是在模拟器下跑的,今天在读取外置SD卡的时候用

Environment.getExternalStorageDirectory().getPath(),得到的是storage/emulated/0。本想只是播放个音乐,但并没有像模拟器一样播放。

百度网友说是不同厂商做的设置不一样,可以先输出所有路径然后找到sdcard路径。

按照网友方法输出:


重点这样确实找到了目录,但是仍是放不出声音- -,难道是全权限问题。

加了 写权限就可以了。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />



附上查找路径的代码:


public List getSDPaths()
	{// 得到全部存储地址(SD卡,手机内存)
		paths = new ArrayList();
		StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
		try
		{
			Class<?>[] paramClasses = {};
			Method getVolumePathsMethod = StorageManager.class.getMethod("getVolumePaths", paramClasses);
			getVolumePathsMethod.setAccessible(true);
			Object[] params = {};
			Object invoke = getVolumePathsMethod.invoke(storageManager, params);
			for (int i = 0; i < ((String[]) invoke).length; i++)
			{
				paths.add(((String[]) invoke)[i]);
				Log.i("tag1", "路径:" + ((String[]) invoke)[i]);
				
			}
		} catch (NoSuchMethodException e1)
		{
			e1.printStackTrace();
		} catch (IllegalArgumentException e)
		{
			e.printStackTrace();
		} catch (IllegalAccessException e)
		{
			e.printStackTrace();
		} catch (InvocationTargetException e)
		{
			e.printStackTrace();
		}
		return paths;
	}




你可能感兴趣的:(【Android学习】真机获取SD卡遇到的问题)