【发布时间】:2019-05-09 07:13:36
【问题描述】:
我的代码(如下所示)无法正常运行。我已经尝试了 SO 上已经提出的所有解决方案,但我找不到任何可以解决我的问题的方法。
我的应用程序的目的是获取密钥代码(数字或表示为标签/“KEYCODE_A”)并将其输出到 txt 文件。无论 txt 文件方面如何,我什至无法获取要输出到日志的键码。
来自股票 android 键盘的唯一四个键码是:
KEYCODE_SHIFT_LEFT = 59
KEYCODE_SHIFT_RIGHT = 60
KEYCODE_ENTER = 66
KEYCODE_DEL = 67
请有人帮我将键盘上的字符表示为数值或以其他方式输出到日志、字段或文本文件。
我尝试了很多解决方案,例如
char unicodeChar = (char)event.getUnicodeChar();
试试editText.setOnEditorActionListener
它们不起作用。
提前感谢您的帮助!!!!!!!
public class MainActivity extends AppCompatActivity{
EditText et_name, et_content;
Button b_save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
}
et_name = (EditText) findViewById(R.id.et_name);
et_content = (EditText) findViewById(R.id.et_content);
final TextView view = (TextView) findViewById(R.id.view);
b_save = (Button) findViewById(R.id.b_save);
et_content.setOnKeyListener(new View.OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
// String keyCodeStr = KeyEvent.keyCodeToString(keyCode);
//view.setText(String.valueOf(keyCodeStr));
char unicodeChar = (char) event.getUnicodeChar();
Log.e("Key", "Code "+keyCode + " " + unicodeChar);
et_content.getText().append(unicodeChar);
return true;
}
});
b_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String filename = et_name.getText().toString();
String content = et_content.getText().toString();
saveTextAsFile(filename, content);
}
});
}
private void saveTextAsFile (String filename, String content){
String fileName = filename + ".txt";
//create file
File file = new File (Environment.getExternalStorageDirectory().getAbsolutePath(), fileName);
//write to file
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.close();
Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e){
e.printStackTrace();
Toast.makeText(this, "File not found", Toast.LENGTH_SHORT).show();
} catch (IOException e){
e.printStackTrace();
Toast.makeText(this, "Error saving", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1000:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(this, "Permission Not Granted", Toast.LENGTH_SHORT).show();
finish();
}
}
}
}
感谢您的帮助!
如果需要更多信息,请告诉我,但我非常渴望解决这个问题!
【问题讨论】:
标签: android android-softkeyboard