在sdcard中下载.apk时存储图像?

时间:2012-03-22 12:50:17

标签: android sqlite

我正在研究数据库项目。实际上包含闪存卡结构。所以对我来说,我想在设备上安装.apk文件时在sdcard中加载一些示例图像。

我试图把它放在drawable上,但它不允许我在数据库中使用这些图像路径,同时用于通过数据库表在应用程序中显示...

3 个答案:

答案 0 :(得分:0)

亲爱的朋友,你似乎误解了Android的运作方式..

在你提出任何其他奇怪的问题之前,请仔细阅读this,请理解你想要实现的目标是不可能的。

除非您的应用程序安装在设备上,否则您无法下载任何内容, 应用程序启动后,您可以编写一个服务,在用户与您的应用程序交互时在后台下载您的图像。

答案 1 :(得分:0)

我不确定我完全理解您的需求,但您可以使用项目中的/assets目录,尝试查看此this

答案 2 :(得分:0)

Cursor cursor;
    InputStream IS;
    private static int k=0;
    private String []dirname ={"Flowers","Animals"};
    private String []country={"Australia","Brazil","Iran","Japan","India"}; 
    private String []captial={"Canberra","Brasilia","Tehran","Tokyo","New Delhi"};
    private String []names={"Lotus","Mogra","Morning glory","Rose","Aster","Dog","Lion","Squirrel","Tiger","Wolf"};
    private File sdcard=Environment.getExternalStorageDirectory();


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample_category);

    Toast.makeText(getApplicationContext(), "Application Preparing For First Time", 5000).show();        

//这里的variableDeclaration是java类,我将数据库对象作为整个应用程序的静态放置。

        VariableDeclaration.db.execSQL("CREATE TABLE IF NOT EXISTS Animals " +
                "(id INTEGER PRIMARY KEY AUTOINCREMENT,path varchar,caption varchar,type int(1));");

        VariableDeclaration.db.execSQL("CREATE TABLE IF NOT EXISTS Flowers " +
                "(id INTEGER PRIMARY KEY AUTOINCREMENT,path varchar,caption varchar,type int(1));");

        VariableDeclaration.db.execSQL("CREATE TABLE IF NOT EXISTS Capitals " +
                "(id INTEGER PRIMARY KEY AUTOINCREMENT,path varchar,caption varchar,type int(1));");


        AssetManager asset_items=this.getAssets();

//这是资产管理员,负责将资产目录中的图像存储到此容器中。

        String []items=new String[10];

        try{

            items=asset_items.list("");

            for(int i=0;i<dirname.length;i++){

// FlashFlicker是我的应用程序目录名,它是在第一次加载.apk时创建的。

                File file=new File(sdcard.getAbsolutePath()+File.separator+"FlashFlicker"+File.separator+dirname[i]);
                file.mkdir();

//在这个for循环中,我在每个目录中创建了一些目录并将样本图像复制到其中。

                for(int j=0;j<5;j++){
                    IS=asset_items.open(items[k]);

                    File file1=new File(sdcard.getAbsolutePath()+File.separator+"FlashFlicker"+File.separator+dirname[i]+File.separator+items[k]);
                    VariableDeclaration.db.execSQL("INSERT INTO "+dirname[i]+" VALUES (null,'"+file1.getAbsolutePath().toString()+"','"+names[k].toString()+"',"+i+");");

                    FileOutputStream out=new FileOutputStream(file1);
                    byte[] buff=new byte[1024];

                    while(IS.read(buff)!=-1){
                        out.write(buff);
                    }
                    out.close();

                    k++;
                }

            }


        }catch(Exception e){}


        int j=2;
        for(int i=0;i<country.length;i++){
         VariableDeclaration.db.execSQL("INSERT INTO Capitals VALUES (null,'"+country[i].toString()+"','"+captial[i].toString()+"',"+j+");"); 
        }