【发布时间】:2019-08-08 10:50:25
【问题描述】:
我想通过从另一个活动 (LoginActivity.java) 中的 3 个编辑文本框获取信息并将该数据传递到另一个活动中来在我的一个活动 (UploadActivity.java) 中创建一个 URL,
我在 SO 上找到的所有问题仅涉及静态 URL,即 www.blahblah.com/blah-blah.asp?My=Yes 等。
基本上用户必须输入他的电子邮件、密码和客户 ID(由我公司制作),然后必须合并成一个字符串
喜欢这个 公共静态最终字符串 UPLOAD_URL = "https://www.smartpractice.co.za/files-upload-ruben.asp?clientID=6868";
我正在使用上面的 url 将用户的位置上传到服务器。
我必须在活动中声明编辑文本框吗?因为目前只有我活动的 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放在这个String里面的""引号里
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。
【问题讨论】:
-
您的登录代码在哪里?
-
最好使用比 okhttp 或改造之类的异步任务更好的东西。
-
@AliAhsan 抱歉,“登录”并不是真正的登录,我们只是将应用程序推广到我公司的某些客户,所以身份验证并不是真正需要的,它只是用来保存和加载电子邮件密码和客户端 ID,我不知道该怎么做,正忙着寻找它还请注意,我大约一周前才开始编码和这个基本的 android 开发,所以我仍然很不了解
-
@PembaTamang,这有什么关系??
-
少样板伴侣
标签: android json url android-edittext uri