创建具有密码保护的文件夹

时间:2013-05-02 08:54:10

标签: java android password-protection

我正在尝试通过创建内置密码保护和音频文件的文件夹来为Android创建媒体记录器。

但现在我只能创建其他应用和Android智能手机用户访问的文件夹和音频文件。

实施密码保护的目的是为了不让其他应用或用户访问文件和文件夹,除非提供密码?

除了创建密码进入面板之外,有没有想法如何实现这一点?

以下是我的代码。

public void onClick(View view) throws Exception {
    if (count == 0) {

        tbxRecordStatus.setText("Record");
        btnRecord.setText("Stop Record");
        Toast.makeText(MainActivity.this, "Recording Starts",
                Toast.LENGTH_SHORT).show();
        String dateInString =  new SimpleDateFormat(
                "yyyy-MM-dd-HH-mm-ss").format(new Date()).toString();
        String fileName = "TasB_" + dateInString + " record.3gp";
        SDCardpath = Environment.getExternalStorageDirectory();
        myDataPath = new File(SDCardpath.getAbsolutePath()  + "/My Recordings");
        if (!myDataPath.exists())
            myDataPath.mkdir();

        audiofile = new File(myDataPath + "/" + fileName);
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setAudioEncodingBitRate(16);
        recorder.setAudioSamplingRate(44100);
        recorder.setOutputFile(audiofile.getAbsolutePath());



        try
        {
         recorder.prepare();
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        recorder.start();
        count++;

    } else {

        tbxRecordStatus.setText("Stop");
        btnRecord.setText("Start Record");
        Toast.makeText(MainActivity.this, "Recording Stops",
                Toast.LENGTH_SHORT).show();
        if (recorder != null) {
            recorder.stop();
            recorder.release();
            recorder = null;

        } else {
            tbxRecordStatus.setText("Warning!");
            Toast.makeText(MainActivity.this, "Record First",
                    Toast.LENGTH_SHORT).show();
        }
        count = 0;
    }
}

1 个答案:

答案 0 :(得分:3)

如果您在External Storage中创建文件,那么按照设计,文件是世界可读的。如果您在目录中创建一个名为.nomedia的文件,那么媒体扫描程序将忽略其中的文件,但如果他们去寻找它们,其他应用程序仍然可以读取它们。

如果您希望文件对您的应用程序是私有的,则需要在Internal Storage中创建它们。此处创建的文件只能由您的应用程序访问(如果我们忽略具有root设备的用户)。但是,内部存储空间通常较少,这意味着它不适合存储大量数据,如音频文件。例如,第7.6.2节中的the Android 4.0 compatibility definition表示设备需要在所有应用程序之间共享至少1GB的内部存储 。这在Android的早期版本中并不是很多而且较少。

唯一想到的另一个选择是加密存储在外部存储中的音频文件,因此当其他应用程序可以访问它们时,它们将无法播放存储的音频。 This question has an answer showing how to use CipherOutputStream to do this.