只是一个简单的XMl文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="auto"
>
<application android:label="@string/app_name">
<activity android:name=".MyActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
然而,我收到一个错误
"在'android'包中找不到属性'installLocation'的资源标识符"
为什么会这样?
编辑
这似乎是IntelliJ的一个问题.至少是我的.这是项目结构的屏幕.我点击了Android 2.3.3 SDK并更改了其构建目标.我在属性之后做了这个
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="8"/>
Run Code Online (Sandbox Code Playgroud)
没有做到这一点.有任何想法吗?

在我的应用程序中,我将把文件从资产存储到SDCard.但现在模拟器中没有更多的空间了.所以我想删除该文件.
那么如何从模拟器中删除该文件?
我开发了一个应用程序,我必须在其中显示 sd 卡中特定文件夹中的图像。我的代码工作正常,但它显示了所有的 SD 卡图像。我已经将选择参数作为我的文件夹名称,因为它已在以下帖子中 提到:使用网格视图显示 SDCard 上特定文件夹中的图像
但是,它没有奏效。请建议我如何做到这一点:下面我发布了我的代码。
public class Album1Activity extends Activity {
static Cursor imageCursor;
static int columnIndex;
GridView gridView;
Intent in;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.grid);
String[] imgColumnID = {MediaStore.Images.Thumbnails._ID};
Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;
imageCursor = managedQuery(uri, imgColumnID, null, null,
MediaStore.Images.Thumbnails.IMAGE_ID);
columnIndex = imageCursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
gridView = (GridView)findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(getApplicationContext()));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
String[] dataLocation = {MediaStore.Images.Media.DATA};
//String []dataLocation …Run Code Online (Sandbox Code Playgroud) Kit-Kat问题无法写入外部SD卡,
如 Goolge文档中所述 为了简化运行KITKAT或更早版本的设备上的代码,您可以使用fromFile(File)模拟DocumentsProvider的行为 下面的代码(New API)适用于Lollipop,但如何使用kitkat的新API?
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, 42);
}
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
if (resultCode == RESULT_OK) {
Uri treeUri = resultData.getData();
DocumentFile pickedDir = DocumentFile.fromFile(new File("/mnt/extSdCard/Test"));
// List all existing files inside picked directory
for (DocumentFile file : pickedDir.listFiles()) {
Log.d("Tag", "Found file " + file.getName() + " with size " + file.length()); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个文件管理器应用程序.我希望向用户显示内部存储和SD卡存储(如果存在).对于我使用的内部存储Environment.getExternalStorageDirectory().getPath().我怎样才能获得SD存储?
我想将我的模拟器的SD卡设置External File从不再存在的旧图像更改为新图像.
我使用了一个新的磁盘映像./mksdcard -l mySdCard 1024M mySdCardFile.img,它创建了mySdCardFile.img一个大小为1GB 的新磁盘映像和一个卷标mySdCard.
磁盘映像在/Users/[YOUR_USER_ID]/Library/Android/sdk/tools/.
然后,我继续设置/Users/[YOUR_USER_ID]/Library/Android/sdk/tools/mySdCardFile.img为路径External File.我点击完了.但是,当我点击AVD管理器中的模拟器实例时,它会一直重置为旧设置,这些旧设置指向不再存在的旧路径.重新启动Studio等不起作用.
android android-virtual-device android-emulator android-sdcard android-studio
在我的图库应用程序中,我使用媒体内容提供程序图像来扩充回收器视图。长按图像时,我会为用户提供重命名该图像文件的选项。所以我在回收站视图中为每个图像都有完整的文件路径(例如:- /storage/sdcard1/DCIM/100ANDRO/ak.jpg )。然后我想重命名该文件。
现在的问题是,由于提供的文件路径是外部 SD 卡的路径,对于 Android 5 及更高版本,需要 SAF(存储访问框架)来写入文件。
所以通常我们使用此代码使用 SAF 重命名文件:-
public void onActivityResult(int requestCode, int resultCode, Intent resultData){
if (resultCode == RESULT_OK) {
Uri treeUri = resultData.getData();
getContentResolver().takePersistableUriPermission(treeUri,
Intent.FLAG_GRANT_READ_URI_PERMISSION |
Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
DocumentFile newFIle = pickedDir.createFile("text/plain","MyFile")
// or rename as
pickedDir.renameTo("fdtd.jpg");
} else {
Log.d("test","NOt OK RESULT");
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我们知道 TreeUri 时就是这种情况。在我的情况下,我知道文件路径,因此想将其转换为 TreeUri。
如果这被证明是一个愚蠢的问题,我深表歉意,这可能是一个快速解决方案,但我就是无法弄清楚。我正在 android studio 中构建一个音乐播放器,尽管我确实实现了 getExternalStorageDirectory() 并在清单文件中添加了权限,但 sdcard 上的所有歌曲都不会显示在列表视图中,只有内部存储器中的歌曲。对此的任何意见或建设性批评都将受到高度赞赏。这是主要的 java 类。
public class MainActivity extends AppCompatActivity {
ListView lv;
String[] items;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lvPlayList);
//---------------------------------------------> V HERE V <-------------------------
final ArrayList<File> mySongs = findSongs(Environment.getExternalStorageDirectory());
//----------------------------------------------------------------------------------
items = new String[ mySongs.size() ];
for(int i = 0; i<mySongs.size(); i++) {
toast(mySongs.get(i).getName().toString());
items[i] = mySongs.get(i).getName().toString().replace(".mp3", "").replace(".wav", "");
}
ArrayAdapter<String> adp = new ArrayAdapter<>(getApplicationContext(), R.layout.song_layout, R.id.textView, items);
lv.setAdapter(adp);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, …Run Code Online (Sandbox Code Playgroud) Mkdirs() 函数在 Android 11 上不起作用。在 Android 10 及更低版本上一切正常。
代码:
***String path =Environment.getExternalStorageDirectory().getAbsolutePath() + "/My_directory/";
File temp_file = new File(path);
if (!temp_file.exists()){
Boolean can_create= temp_file.mkdir();
}***
Run Code Online (Sandbox Code Playgroud)
如果 Android 10 或更低版本,以上代码将返回 true。但在 Android 11 中返回 false。清单权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
请注意,运行时权限被视为相同(READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE)。
清单应用:
<application
android:requestLegacyExternalStorage="true"
Run Code Online (Sandbox Code Playgroud)
我能够在外部存储中写入的唯一方法是使用,getExternalFilesDir()但这不是根目录。
根据这个开发者网站,我们不能再在根目录中创建文件夹了!
检查后到目前为止的问题:
1-是否确认在Android 11中我们无法在根目录上创建任何文件夹?有解决办法吗?
2-如果是,将数据保存在外部存储中的方法是什么,不包括getExternalFilesDir()?
3-为什么android:requestLegacyExternalStorage="true"不工作?
我可以使用意图选择图像及其路径.使用图像的路径.我必须将该图像设置为邮件正文内容的附件.怎么可能在Android ???
android-sdcard ×10
android ×9
java ×2
storage ×2
audio-player ×1
email ×1
filewriter ×1
gridview ×1
listview ×1
mkdirs ×1