如何将密码保存到 android 上的文件?
How to save password to file on android?
我在将文件写入 Android 存储时遇到问题。我用了很多例子,最烦人的问题是
java.io.FileNotFoundException: /storage/emulated/0/Android/fileSD (Permission denied)
是的,我正在向我的清单添加使用权限
这是我的Activity:
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);
}
}
如果用户第一次打开应用程序,他输入密码,它应该写入文件。如果文件存在,我们应该读取它并与用户将输入的通行证进行比较,如果它等于开始新的 activity,否则显示消息,表明它是不正确的通行证。
请帮忙,我尝试做了几天,我知道我应该做什么
不足以将它的使用权限写入您的清单,您应该在运行时处理它,
加上将用户密码存储在文件中不是一个好主意,每个人都可以阅读它
尝试使用SharedPreferences,你可以这样保存密码
SharedPreferences sharedPreferences = getSharedPreferences("PrefName", MODE_PRIVATE);
sharedPreferences.edit().putString("password", "Your Password").apply();
需要的时候可以轻松取回
sharedPreferences.getString("password", "")
我在将文件写入 Android 存储时遇到问题。我用了很多例子,最烦人的问题是
java.io.FileNotFoundException: /storage/emulated/0/Android/fileSD (Permission denied)
是的,我正在向我的清单添加使用权限
这是我的Activity:
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);
}
}
如果用户第一次打开应用程序,他输入密码,它应该写入文件。如果文件存在,我们应该读取它并与用户将输入的通行证进行比较,如果它等于开始新的 activity,否则显示消息,表明它是不正确的通行证。
请帮忙,我尝试做了几天,我知道我应该做什么
不足以将它的使用权限写入您的清单,您应该在运行时处理它, 加上将用户密码存储在文件中不是一个好主意,每个人都可以阅读它
尝试使用SharedPreferences,你可以这样保存密码
SharedPreferences sharedPreferences = getSharedPreferences("PrefName", MODE_PRIVATE);
sharedPreferences.edit().putString("password", "Your Password").apply();
需要的时候可以轻松取回
sharedPreferences.getString("password", "")