0

.apk のインストール中にのみ、内部ストレージにファイルを作成する方法を知りたいです。

私の問題は、MainActivity の onCreate メソッドを使用してファイルを配置すると、アプリケーションを再起動するたびにファイルの内容が削除されることです。

file.exists も使用しようとしましたが、役に立ちませんでした。

ここに私が使用しているコードがあります:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Internal internal = new Internal();
        String file_name = "profil1.txt";
        String file_name1 = "profil2.txt";
        File f = new File(file_name);
        try {
            if(f.exists()){
            Log.d(TAG, "les fichiers sont deja cree");
            }else {
                FileOutputStream fos = openFileOutput(file_name, Context.MODE_WORLD_WRITEABLE);
                FileOutputStream fos1 = openFileOutput(file_name1, Context.MODE_WORLD_WRITEABLE);    
                
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        File file =getFilesDir();
        Log.d("TAG", file.getAbsolutePath());
        Path = file.getAbsolutePath();
        //internal.setFile();
        setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);

        setContentView(R.layout.main_grid);

        mGrid = (GridView) findViewById(R.id.gridview);
        mGrid.setColumnWidth(95);
        mGrid.setVisibility(0x00000000);
        // content.dispatchSystemUiVisibilityChanged(BIND_ADJUST_WITH_ACTIVITY);
        registerIntentReceivers();
        // requestWindowFeature(Window.FEATURE_NO_TITLE);
        appManager = new ApplicationManager(this, getPackageManager());
        appManager.loadApplications(true);
        
        bindApplications();
        bindButtons();

        // Try to find activity to auto-start on create.
        int i = 0;
        while (i < APPLICATION_START_NAMES.length) {
            Intent startIntent = appManager
                    .getIntentByName(APPLICATION_START_NAMES[i]);
            if (startIntent != null) {
                // Found it, let's start and continue.
                startActivity(startIntent);
                break;
            }
            i++;
            Log.d("TAG", "application number" + i);
            // we will try to hid the stat bar temporory because to hid it w e
            // neeed root acces
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
        // Administrat.SINGLETON.init(this);
    }
4

1 に答える 1

1

インストール中にコードを実行することはできません。あなたが持っているコードonCreate()はほぼ正しいです。問題は、ファイルの存在を確認するときに、ファイルを探す場所を指定していないことです。アプリケーションのプライベート ディレクトリを指定する必要があります。これを試して:

    String file_name = "profil1.txt";
    String file_name1 = "profil2.txt";
    File f = new File(getFilesDir(), file_name); // File in the private directory
    try {
        if(f.exists()){
            ...
        }
    }
于 2013-03-11T15:36:28.207 に答える