如何将 editText 数据传递给字符串 URL

How to pass editText data to a string URL

我想通过从另一个 activity (LoginActivity.java) 中的 3 个编辑文本框中获取信息,在我的一项活动 (UploadActivity.java) 中制作一个 url 和将该数据传递给另一个 activity,

我在 SO 上找到的所有问题都只涉及静态 URL 即 www.blahblah.com/blah-blah.asp?My=Yes

基本上用户必须输入他的电子邮件,密码和客户ID(由我公司制作)然后它必须合并成一个字符串

喜欢这个 public 静态最终字符串 UPLOAD_URL = "https://www.smartpractice.co.za/files-upload-ruben.asp?clientID=6868";

我正在使用上面 url 将用户的位置上传到服务器。

我必须在 activity 中声明编辑文本框吗?因为目前只有 activity

的 XML 布局

我在另一个问题中发现了这个,但我不明白如何将它实现到我的代码中。

您的编辑文本

EditText your_edit_text = (EditText) findViewById(R.id.your_id);

从编辑文本中获取用户数据作为休闲..

String edit_text_data = your_edit_text.getText().toString();

现在,当您需要将数据放在 url 上时 .. 像这样使用它 ..

String your_url = "http://www.google.com=" + edit_text_data;

我想要这个字符串中的 Url 在 "" 引号中

   public static final String UPLOAD_URL = 
  "https://www.smartpractice.co.za/files-upload-ruben.asp?MyForm=Yes";

上传活动JAVA

public class UploadActivity extends AppCompatActivity implements View.OnClickListener {

public static final String UPLOAD_URL = "https://www.smartpractice.co.za/files-upload-ruben.asp?MyForm=Yes";
public static final String UPLOAD_KEY = "image";

private int PICK_IMAGE_REQUEST = 1;

private Button buttonChoose;
private Button buttonUpload;

private ImageView imageView;
private Bitmap bitmap;
private Uri filePath;



@Override
public void onCreate(Bundle savedInstanceState ) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload);

        init();
        }
        private void init(){
        buttonChoose = findViewById(R.id.btnChoose);
        buttonUpload = findViewById(R.id.btnUpload);

        imageView = findViewById(R.id.imageView);

        buttonChoose.setOnClickListener(this);
        buttonUpload.setOnClickListener(this);
        }
private void showFileChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
        }

@SuppressWarnings("deprecation")
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        filePath = data.getData();
        try {
        bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
        imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }

public String getStringImage(Bitmap bmp){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        byte[] imageBytes = baos.toByteArray();
        return Base64.encodeToString(imageBytes, Base64.DEFAULT);
        }

private void uploadImage(){
@SuppressLint("StaticFieldLeak")
class UploadImage extends AsyncTask<Bitmap,Void,String> {
    private ProgressDialog loading;
    private RequestHandler rh = new RequestHandler();

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        loading = ProgressDialog.show(UploadActivity.this, "Uploading Image", "Please wait...",true,true);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        loading.dismiss();
        Toast.makeText(UploadActivity.this,s,Toast.LENGTH_LONG).show();
    }

    @RequiresApi(api=Build.VERSION_CODES.KITKAT)
    @Override
    protected String doInBackground(Bitmap... params) {
        Bitmap bitmap = params[0];
        String uploadImage = getStringImage(bitmap);

        HashMap<String,String> data = new HashMap<>();
        data.put(UPLOAD_KEY, uploadImage);
        data.put("name",getFileName(filePath));

        return rh.postRequest(UPLOAD_URL,data);
    }
}

    UploadImage ui = new UploadImage();
        ui.execute(bitmap);
                }

@Override
public void onClick(View v) {
        if (v == buttonChoose) {
        showFileChooser();
        }
        if(v == buttonUpload){
        if(filePath!=null) {
        uploadImage();
        } else {
        Toast.makeText(UploadActivity.this,"Select Image",Toast.LENGTH_LONG).show();
        }
        }
        }
@RequiresApi(api=Build.VERSION_CODES.KITKAT)
    String getFileName(Uri uri){
            String result = null;
            if (Objects.equals(uri.getScheme(), "content")) {
            try (Cursor cursor=getContentResolver().query(uri, null, null, null, null)) {
            if (cursor != null && cursor.moveToFirst()) {
            result=cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
            }
            }
            }
            if (result == null) {
            result = uri.getPath();
            assert result != null;
            int cut = result.lastIndexOf('/');
            if (cut != -1) {
            result = result.substring(cut + 1);
            }
            }
            return result;
            }
    }

**登录活动 到目前为止,编辑文本框在 XML 布局中 **

public class LoginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
    }

}

简而言之,从 LoginActivity 中获取 editText 值并将其传递给 UploadActivity 并使用该信息在 UploadActivity.

中构建 URL

Take edittext values from LoginActivity & Pass the values to UploadActivity

LoginActivity 中的 onCreate 方法中绑定您的视图(用您的 ID 更改 ID)并通过 Intent 将输入传递给 UploadActivity

public class LoginActivity extends AppCompatActivity {

private EditText email,password,email;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

 email = findViewById(R.id.email); 
 password = findViewById(R.id.password);
 email = findViewById(R.id.clientID);
 Button loginBtn = findViewById(R.id.loginBtn);

loginBtn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                String emailAddress = email.getText().toString().trim();
                String userPassword = password.getText().toString().trim();

             //Pass the data to next activity


             String clientId = clientID.getText().toString().trim();
             Intent intent = new Intent(LoginActivity.this, UploadActivity.class);
             intent.putExtra("clientId", clientId);
             intent.putExtra("email", emailAddress);
             intent.putExtra("password", userPassword);
             startActivity(intent);
            }
        });
    }

}

Use above information to build a URL in UploadActivity

    @RequiresApi(api=Build.VERSION_CODES.KITKAT)
        @Override
        protected String doInBackground(Bitmap... params) {
            Bitmap bitmap = params[0];
            String uploadImage = getStringImage(bitmap);

            HashMap<String,String> data = new HashMap<>();
            data.put(UPLOAD_KEY, uploadImage);
            data.put("name",getFileName(filePath));

        Intent intent = getIntent();
        String clientId = intent.getStringExtra("clientId");

Uri.Builder builder = new Uri.Builder();
builder.scheme("https")
    .authority("ww.smartpractice.co.za")
    .appendPath("files-upload-ruben.asp")
    .appendQueryParameter("clientID", clientId);
String myUrl = builder.build().toString();

            return rh.postRequest(myUrl,data);
        }

干杯:)