EditText 및 (순간 2 버튼)에 대한 활동이 있습니다. 버튼을 누르면 EditText의 데이터가 비어 있거나 널 문자열인지 검사됩니다. 그렇다면 AlertDialog가 표시되어야합니다. TextEdit 결과가 비어 있지 않을 때까지이 작업을 반복해야합니다. Activity에서 더 이상 처리하지 않는 한 제대로 작동합니다. 만약 내가 더 자세한 설명이 있다면 Alertdialog는 보이지 않습니다. 단계별 디버깅 단계는 응용 프로그램이 검사에 들어가고 Alertdialog를 생성하지만 표시되지 않고 대신 코드의 다음 명령이 수행되었음을 보여줍니다. 그래서 그것은 말이되지 않습니다. 응용 프로그램 은 AlertDialog가 표시된 지점에서 처리를 중지해야합니다 (). 비어 있지 않은 문자열을 받으면 다양한 SQL 주입 문자열을 가진 텍스트 파일과 비교하여 테스트 진행 상황을 나타내는 ProgressDialog를 제기해야합니다. 테스트가 양수이면 EditText로 돌아가서 데이터를 수정할 수 있어야합니다. 지금까지 모든 동작이 동일합니다. 그래서 나는 이러한 행동을위한 자신의 (내부) 클래스를 만드는 것이 최선의 방법이라고 믿습니다. 추가 작업 (아직 암시되지 않음)은 다음과 같아야합니다. 하나의 단추가 데이터를 수동으로 완료하라는 다른 활동을 호출하면 다른 단추는 다양한 인터넷 자원에서 누락 된 데이터를 가져 오려고 시도합니다. 올바른 데이터를 선택할 수 있도록 다른 활동에서 결과를 보여줍니다. 그러면 전체 데이터가 데이터베이스로 전송됩니다. (SQL 주입 문자열에 대한 테스트를위한 하나의 이유) 여기Alertdialog 표시되지 않습니다.
코드입니다 : 가능한 한 많은 도움을 제공하는 경우
public class BlahverwaltungDateneingabeActivity extends Activity {
public String vtitel=null; //Variable, der der Wert des Texteingabefeldes zugewiesen werden soll
public String vtitel_1 = null; //Variable für Stringmanipulation
private EditText input_vtitel; //Texteingabefeld
public static Boolean inject_2=false;
final Context context_1=this;
Toast einToast;
// private String filename=getString(R.string.Tempfile_fuer_Blahdaten); // Temporäres File für Blahdaten
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blahverwaltung_dateneingabe_1);
Button manuellButton = (Button) findViewById(R.id.manuell_button);
Button ofdbButton = (Button) findViewById(R.id.blah_button);
//OnClicklistener erzeugen
manuellButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
input_vtitel = (EditText) findViewById(R.id.Blahtitel); //Texteingabefeld initialisieren
vtitel = input_vtitel.getText().toString(); //Texteingabe String zuweisen
if (vtitel.equals(null) || vtitel.equals("")) {
AlertDialog.Builder adb_1 = new AlertDialog.Builder(context_1); //Alertdialog wenn Texteingabe leer
adb_1.setTitle(R.string.Nullstring); //Alertdialgo Titel setzen
adb_1.setMessage(R.string.Nullstring_1); //AlertNachricht setzen
adb_1.setCancelable(false); //kann nicht durch Back abgebrochen werden
adb_1.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { //OnClickListener erzeugen
public void onClick(DialogInterface dialog, int which) { //Activity neu starten
dialog.dismiss();
if (Build.VERSION.SDK_INT >= 11) { //Methode zum Neustart in Abhängigkeit vom SDK wählen
recreate();
} else {
Intent in_1 = getIntent();
overridePendingTransition(0, 0);
in_1.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(in_1);
}
}
});
AlertDialog ad_1 = adb_1.create(); //Alertdialig erzeugen
ad_1.show();
//Alertdialog anzeigen
}
InjectionDialog id_1= new InjectionDialog(BlahverwaltungDateneingabeActivity.this);
id_1.execute(vtitel);
try {
inject_2=id_1.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
// vtitel_1 = vtitel.replace(" ", "+"); //Leerzeichen durch "+" ersetzen
/*
try {
outputstream_1 = openFileOutput(filename, Context.MODE_PRIVATE);
outputstream_1.write(vtitel.getBytes());
outputstream_1.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
}
*/
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.blahverwaltung_dateneingabe, menu);
return true;
}
}
가, 설명해주십시오, 나는 자바/안드로이드 초보자를 해요 때로는하지 않습니다 내가하는 일을 완전히 이해하라. 학습 서적과 인터넷 자료는 종종 도움이되지 않습니다. 제공된 솔루션을 채택 할 수는 있지만 코드가 수행하는 방식과 이유가 무엇인지 이해하고 싶습니다.
본인이 위에서 언급했듯이 데이터가 interent로 전송 될 수 있으므로 HTML 해킹, 크로스 사이트 스크립팅 Java 스크립트, PHP 공격 코드가 전송 될 때 데이터에 어떻게 있는지 확인할 수 있습니까? aRe 거기도 일부 comon 문자열에 대해 데이터 문자열을 확인할 수 있습니까?