【问题标题】:getting package name in android在android中获取包名
【发布时间】:2015-05-23 18:33:08
【问题描述】:

我想在扩展 SQLiteOpenHelper 时获取我的包名。在这堂课中,我自己更改了我的包名,它是硬代码。我只想让它自动获取包名。我该如何解决?它扩展自 SQLiteOpenHelper 而不是 Activity,这是我的问题。

enter code here
     public class database extends SQLiteOpenHelper {


public final String path="data/data/com.fatemehkh.hamkon/databases/";

public final String Name="database";
public SQLiteDatabase mydb;

private final Context mycontext;


public database(Context context) {
    super(context, "database", null, 1);
    mycontext=context;

}


@Override
public void onCreate(SQLiteDatabase arg0) {
    // TODO Auto-generated method stub

}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub

}


public void useable(){

    boolean checkdb=checkdb();

    if(checkdb){

    }else{

        this.getReadableDatabase();

        try{
        copydatabase();
        }catch(IOException e){
        }

    }



}

public void open(){

    mydb=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READWRITE);

}

public void close(){
    mydb.close();
}

public boolean checkdb(){

    SQLiteDatabase db=null;
    try{    
    db=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READONLY);
    }
    catch(SQLException e)
    {

    }
    //mydb.close();
    return db !=null ? true:false ;

}

public void copydatabase() throws IOException{
    OutputStream myOutput = new FileOutputStream(path+Name);
    byte[] buffer = new byte[1024];
    int length;
    InputStream myInput = mycontext.getAssets().open(Name);
    while ((length = myInput.read(buffer)) > 0) {
    myOutput.write(buffer, 0, length);
    }
    myInput.close();
    myOutput.flush();
    myOutput.close();
}

我如何改变这一行。

public final String path="data/data/com.fatemehkh.hamkon/databases/";

【问题讨论】:

标签: android sqlite


【解决方案1】:

试试这个:

public static final String DATABASE_NAME = "your_data.db";
public database(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);

    String path=context.getDatabasePath(database.DATABASE_NAME).getAbsolutePath();
}

【讨论】:

  • 那我何时何地使用路径?
  • 这确实是一个更广泛的背景。我建议您改为发布一个新问题。如果这个答案对你在这篇文章中的问题有所帮助,请接受它。
  • 不知道怎么用。
  • 您可以从stackoverflow.com/questions/3436434/…stackoverflow.com/questions/3474538/… 获得有关如何使用它的帮助...可能的用例包括to move the internal DB to the SDCard
  • 感谢您的帮助,经过多次尝试,我解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2012-01-28
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多