android 外部存储创建目录,无法在Android设备上的外部存储中创建文件...

我正在尝试在外部存储中创建一个文件夹,我在这里跟踪了几个其他线程.然而,即使我似乎在做他们指出的事情,创作也会失败.

这是一段代码

boolean mExternalStorageAvailable = false;

boolean mExternalStorageWriteable = false;

String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)) {

mExternalStorageAvailable = true;

mExternalStorageWriteable = true;

} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {

mExternalStorageAvailable = true;

mExternalStorageWriteable = false;

} else {

mExternalStorageAvailable = false;

mExternalStorageWriteable = false;

}

File exst = Environment.getExternalStorageDirectory();

String exstPath = exst.getPath();

File fooo = new File(exstPath+"/fooo");

boolean success = fooo.mkdir();

当我执行它时,我得到了这个:

mExternalStorageAvailable = true;

mExternalStorageWriteable = true;

success = false;

这是整个清单文件:

package="com.mydev.mobile.Test"

android:versionCode="1"

android:versionName="1.0" >

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

android:label="@string/app_name"

android:name=".TestIndexSearchForHitsAndroidActivity" >

我究竟做错了什么?谢谢!

Android,要在手机内部存储创建SQLite数据库文件(例如命名为`Sense.db`),你可以按照以下步骤操作: 1. **添加权限**: 首先,在AndroidManifest.xml文件添加读外部存储的权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 2. **连接数据库**: 使用Java或Kotlin编代码,通过`SQLiteDatabase`类来创建和管理数据库。你需要导入`android.database.sqlite`包。 ```java // Java 示例 import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class SenseDBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "Sense.db"; private static final int DATABASE_VERSION = 1; public SenseDBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 这里编创建表的SQL语句 db.execSQL("CREATE TABLE IF NOT EXISTS senses (id INTEGER PRIMARY KEY AUTOINCREMENT, data TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 数据库升级时,如果需要删除旧表并重建,请在这里处理 db.execSQL("DROP TABLE IF EXISTS senses"); onCreate(db); } } ``` ```kotlin // Kotlin 示例 import androidx.room.Database import androidx.room.RoomDatabase @Database(entities = [Senses::class], version = 1) abstract class SenseDatabase : RoomDatabase() { abstract fun senseDao(): SenseDao } // Dao接口 interface SenseDao { suspend fun insertData(data: String) // 其他数据库操作... } fun createDataBase(context: Context): SenseDatabase { val database = Room.databaseBuilder( context.applicationContext, SenseDatabase::class.java, // 数据库名称 DATABASE_NAME // 初始化版本号 ).allowMainThreadQueries().build() return database } ``` 3. **使用数据库**: 创建或获取数据库实例后,可以开始插入数据到`sense`表: ```java SenseDBHelper dbHelper = new SenseDBHelper(context); SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("INSERT INTO senses (data) VALUES (?)", new String[] { "example_data" }); ``` 4. **注意**: - Android M及以上系统会要求动态申请权限,所以记得在运行时检查权限,并根据用户反馈请求。 - 如果数据库大小很大或者频繁更改,考虑将数据库放在应用私有目录(app-specific directory)而非公共存储区。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值