gpt4 book ai didi

android - chmod 失败 : EPERM (Operation not permitted) in android?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:12 28 4
gpt4 key购买 nike

我想为此在 sdcard 或外部 sdcard 中创建数据库我已经尝试过这段代码并使用它我已经成功地在 sdcard 中创建了数据库但是在 logcat 中它给我如下警告

逻辑猫

07-18 14:18:22.140: W/FileUtils(8595): Failed to chmod(/mnt/sdcard/peakmedia/DB_PMD): libcore.io.ErrnoException: chmod failed: EPERM (Operation not permitted)

DB_Helper.java

public class DB_Helper extends SQLiteOpenHelper
{

public DB_Helper(Context context)
{
super(context, Environment.getExternalStorageDirectory().getAbsolutePath()
+ File.separator + DB_Constant.DB.FILE_DIR
+ File.separator + DB_Constant.DB.DATABASENAME, null, DB_Constant.DB.DB_VERSION);

}

@Override
public void onCreate(SQLiteDatabase db)
{
String query=String.format(DB_Constant.CREATE_TABLE_QUERY.CREATE_MYFILES_TABLE);
db.execSQL(query);


query=String.format(DB_Constant.CREATE_TABLE_QUERY.CREATE_MYUSERS_TABLE);
db.execSQL(query);

query=String.format(DB_Constant.CREATE_TABLE_QUERY.CREATE_MYPLAYLIST_TABLE);
db.execSQL(query);

query=String.format(DB_Constant.CREATE_TABLE_QUERY.CREATE_MYDEVICE_TABLE);
db.execSQL(query);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
if(newVersion > oldVersion)
{

db.execSQL("DROP TABLE IF EXISTS "+ DB_Constant.TABLE.MYFILES);
onCreate(db);

db.execSQL("DROP TABLE IF EXISTS "+ DB_Constant.TABLE.MYUSERS);
onCreate(db);

db.execSQL("DROP TABLE IF EXISTS "+ DB_Constant.TABLE.MYPLAYLIST);
onCreate(db);

db.execSQL("DROP TABLE IF EXISTS "+ DB_Constant.TABLE.MYDEVICE);
onCreate(db);

}
}
}

最佳答案

刚刚解决了这个问题。

您必须让您的应用程序加入 linux build 才能授予它 SYSTEM 权限。

  1. 将这一行添加到Android.mk

    LOCAL_CERTIFICATE := 平台

  2. 将其添加到 AndroidManifest.xml 的 list 节点中

    android:sharedUserId="android.uid.system"

  3. 生成apk并推送到/system/app/

  4. 现在你可以试试跑

    final String command = "chmod 777 /data/ena";
    Process p = Runtime.getRuntime().exec(command);

    File file = new File("/data/ena");
    if (file.exists()) {
    boolean result = file.setExecutable(true);
    Log.e(TAG, "trpb67, RESULT IS " + result);
    }

    结果的值应该为真

关于android - chmod 失败 : EPERM (Operation not permitted) in android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24823861/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com