0

Androidアプリケーションを実行しているとき、そのデータベースはエミュレータの内部メモリに直接保存されます。アプリケーション (.apk ファイル) は外部ストレージに保存されます。データベースのサイズは 230MB です。manifest.xml に次の行があります。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<manifest android:installLocation="preferExternal" >

そして、エラー INSTALL_FAILED_DEXOPT が発生する次のコード:

public void copyDatabase() throws IOException 
    {
        if(!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
        {
            Toast.makeText(mycontext,"External Sd card not mounted", Toast.LENGTH_LONG).show();
        }
        try
        {
            InputStream in=mycontext.getAssets().open("Demo.db");
            File outFile =new File(Environment.getExternalStorageDirectory()+File.separator+ "Demo.db);
            outFile.createNewFile();
            OutputStream out= new FileOutputStream(outFile);
            byte[] buf = new byte[1024];
            int len;
            while((len = in.read(buf))> 0)
            {
                out.write(buf,0,len);
            }
            out.close();
            in.close();
            Log.i("copyDatabase","Database Has been transferred");

        }
        catch(IOException e)
        {
            Log.i("CopyDatabase","could not copy database");
        }

    }
    public  boolean checkDatabase() 
    {   
        SQLiteDatabase checkdb=null;
    try
    {
        String myPath="/sdcard/demo.db";
        checkdb=SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

        Log.i("checkDatabase database path",checkdb.getPath());
    }
    catch(SQLiteException e)
    {
        Log.e("Database doesn`t exist",e.toString());
    }
    if(checkdb!=null)
    {
        checkdb.close();
    }
    return checkdb != null ? true : false;


    }
    public void openDatabase() throws SQLException
    {
        String myPath="/sdcard/demo.db"
        myDatabase=SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    }
4

0 に答える 0