2017-02-22 33 views
-1

我遇到了將文件寫入Android存儲的問題。我用了很多的例子,最惱人的問題是如何將密碼保存到android上的文件?

java.io.FileNotFoundException:/存儲/模擬/ 0 /安卓/ fileSD(拒絕)

是的,我將使用-permission我的清單

這是我的活動:

public class MainActivity extends Activity { 
    // init variables 
    EditText pass; 
    Button login; 
    String password; 
// final String DIR_SD = "/Android"; 
// final String FILENAME_SD = "fileSD"; 
// final String LOG_TAG = "myLogs"; 

//init onCreate method that provide our logic when activity start open 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

//  if(mFileName.()){ 
// 
//  } 

    pass = (EditText) findViewById(R.id.pass); 
    login = (Button) findViewById(R.id.button); 



    login.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      password = pass.getText().toString().trim(); 

       if (TextUtils.isEmpty(password)) { 

        pass.setError("password mustnot be empty"); 
        pass.focusSearch(View.FOCUS_DOWN); 

       } else if (password.length() >= 6 && password.length() <= 24) { 

        Toast.makeText(getApplicationContext(), "validation sucess", Toast.LENGTH_LONG).show(); 

        Intent intent = new Intent(MainActivity.this, new_activity.class); 
        startActivity(intent); 


       } else { 
        pass.setError("password length must be match:5=<password>=10"); 
        pass.focusSearch(View.FOCUS_DOWN); 
       } 


      } 
    }); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

如果在第一次用戶打開應用程序時,他輸入密碼,它應該寫入文件。如果文件存在,我們應該讀取它並與用戶將要輸入的通行證進行比較,如果它等於開始新活動,則顯示不正確通過的消息。

請大家幫忙,我嘗試了幾天做到這一點,IDK的是我應該做的

+0

你的閱讀文件代碼在哪裏? –

+0

你不想讀取上面的代碼中的任何文件 –

+1

1)Android API 23+你必須請求運行時權限2)爲什麼不使用SharedPrefences? –

回答

0

嘗試使用SharedPreferences,你可以保存密碼,這樣

SharedPreferences sharedPreferences = getSharedPreferences("PrefName", MODE_PRIVATE); 
sharedPreferences.edit().putString("password", "Your Password").apply(); 

當你需要它,你可以輕鬆地檢索

sharedPreferences.getString("password", "") 
0

不足以寫它使用許可權,以你的清單,你應該處理它在運行時, 加上其一個壞主意,在文件存儲用戶密碼,每個人都可以閱讀

+0

我將散列密碼 –

+0

然後檢查此URL https://developer.android.com/training/permissions/requesting.html有關在運行時請求權限 –