Java 使用移动数据时,imageview不会更新,但使用wifi时会更新
因此,我正在开发一款android移动应用程序,可以将数据和图像上传到数据库。这一切都适用于我使用mysql和托管的数据库部分。im现在唯一的问题是,当im使用wifi时,imageView会立即更新为我上传的最新图像,但当im使用移动数据时,imageView不会刷新为我上传的最新图像。请告诉我如何修复这个错误。先进的TQM 1.AndroidManifest.xmlJava 使用移动数据时,imageview不会更新,但使用wifi时会更新,java,android,mysql,mobile,Java,Android,Mysql,Mobile,因此,我正在开发一款android移动应用程序,可以将数据和图像上传到数据库。这一切都适用于我使用mysql和托管的数据库部分。im现在唯一的问题是,当im使用wifi时,imageView会立即更新为我上传的最新图像,但当im使用移动数据时,imageView不会刷新为我上传的最新图像。请告诉我如何修复这个错误。先进的TQM 1.AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.user.cliniclocum">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/caduceus_medicine_symbol_white_black_button"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainPageLogin"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".RegistrationPage"
android:label="@string/title_activity_registration_page" />
<activity
android:name=".ClinicOwnerMainPage"
android:label="@string/title_activity_clinic_owner_main_page" />
<activity
android:name=".DoctorMainPage"
android:label="@string/title_activity_doctor_main_page" />
<activity
android:name=".ClinicOwnerProfilePage"
android:label="@string/title_activity_clinic_owner_profile_page" />
<activity
android:name=".ClinicOwnerUploadImagePage"
android:label="@string/title_activity_clinic_owner_upload_image" />
<activity
android:name=".ClinicOwnerSetLocumJobPage"
android:label="@string/title_activity_clinic_owner_set_locum_job" />
<activity
android:name=".CoViewLocumPosted"
android:label="@string/title_activity_co_view_locum_posted" />
<activity
android:name=".CoUpdateLocumPostedDetails"
android:label="@string/title_activity_co_locum_posted_details" />
<activity
android:name=".DoProfilePage"
android:label="@string/title_activity_do_profile_page" />
<activity
android:name=".DoUploadApcImage"
android:label="@string/title_activity_do_upload_apc_image" />
<activity
android:name=".DoViewLocumPost"
android:label="@string/title_activity_do_view_locum_post" />
<activity
android:name=".DoViewLocumDetails"
android:label="@string/title_activity_do_view_locum_details" />
<activity
android:name=".DoViewClinicProfile"
android:label="@string/title_activity_do_view_clinic_profile" />
<activity android:name=".CoImageFullScreen" />
</application>
2.ProfilePage.java
public class ClinicOwnerProfilePage extends AppCompatActivity implements View.OnClickListener{
TextView textViewUserRole;
EditText editTextCoProfilePageName, editTextCoProfilePageAddress, editTextCoProfilePageClinicOwnerName, editTextCoProfileFacilities;
Button buttonCoProfileUploadClinicImage, buttonCoProfileUpdateProfile;
Spinner spinnerCoProfilePatientTurnover;
ArrayAdapter<CharSequence> adapter;
private ImageView imageViewCoProfilePageClinicImage;
private Bitmap bitmap;
String imagePath;
private ProgressDialog loading;
String receiveSpEmail;
String passedSpPatientTurnover;
// added for refreshing event
SwipeRefreshLayout swipeRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_clinic_owner_profile_page);
textViewUserRole = (TextView)findViewById(R.id.tvCoUserRole);
editTextCoProfilePageName = (EditText)findViewById(R.id.etCoProfileName);
editTextCoProfilePageAddress = (EditText)findViewById(R.id.etCoProfileAddress);
editTextCoProfilePageClinicOwnerName = (EditText)findViewById(R.id.etCoProfileClinicOwnerName);
editTextCoProfileFacilities = (EditText)findViewById(R.id.etCoProfileFacilities);
buttonCoProfileUploadClinicImage = (Button)findViewById(R.id.btnCoProfileUploadImage);
buttonCoProfileUpdateProfile = (Button)findViewById(R.id.btnCoProfileUpdateProfile);
buttonCoProfileUploadClinicImage.setOnClickListener(this);
buttonCoProfileUpdateProfile.setOnClickListener(this);
spinnerCoProfilePatientTurnover = (Spinner)findViewById(R.id.spCoProfileUpdatePatientTurnover);
adapter = ArrayAdapter.createFromResource(this, R.array.SpinnerCoUpdatePatientTurnover, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerCoProfilePatientTurnover.setAdapter(adapter);
spinnerCoProfilePatientTurnover.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
passedSpPatientTurnover = spinnerCoProfilePatientTurnover.getItemAtPosition(position).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
receiveSpEmail();
getCoProfileData();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
imageViewCoProfilePageClinicImage = (ImageView) findViewById(R.id.ivCoProfileClinicImage);
//getCoImageProfile();
getImage();
/*imageViewCoProfilePageClinicImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// to send bitmap using intent, we need to change it into ByteArray first and putting byteArray into the intent extra
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 25, stream);
byte[] byteArray = stream.toByteArray();
Intent fullScreenIntent = new Intent(ClinicOwnerProfilePage.this, CoImageFullScreen.class);
fullScreenIntent.putExtra("CoImage", byteArray);
startActivity(fullScreenIntent);
}
});*/
//added for pull to refresh
swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipe);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
swipeRefreshLayout.setRefreshing(true);
(new Handler()).postDelayed(new Runnable() {
@Override
public void run() {
getImage();
}
}, 3000);
}
});
//end of refreshing event
}
public void receiveSpEmail(){
SharedPreferences preferences = getSharedPreferences("PassingEmail", MODE_PRIVATE);
receiveSpEmail = preferences.getString("passEmail", "..");
textViewUserRole.setText(receiveSpEmail);
}
private void getCoProfileData() {
loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false);
String url = ClinicOwnerGetProfile.DATA_URL+receiveSpEmail.toString().trim();
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
loading.dismiss();
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(ClinicOwnerProfilePage.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showJSON(String response){
String clinic_name="";
String address = "";
String clinicownername = "";
String facilities = "";
String patient_turnover = "";
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(ClinicOwnerGetProfile.JSON_ARRAY);
JSONObject clinicOwnerData = result.getJSONObject(0);
clinic_name = clinicOwnerData.getString(ClinicOwnerGetProfile.KEY_NAME);
address = clinicOwnerData.getString(ClinicOwnerGetProfile.KEY_ADDRESS);
clinicownername = clinicOwnerData.getString(ClinicOwnerGetProfile.KEY_CLINICOWNERNAME);
facilities = clinicOwnerData.getString(ClinicOwnerGetProfile.KEY_FACILITIES);
patient_turnover = clinicOwnerData.getString(ClinicOwnerGetProfile.KEY_PATIENT_TURNOVER);
} catch (JSONException e) {
e.printStackTrace();
}
editTextCoProfilePageName.setText(clinic_name);
editTextCoProfilePageAddress.setText(address);
editTextCoProfilePageClinicOwnerName.setText(clinicownername);
editTextCoProfileFacilities.setText(facilities);
for (int i = 0; i < spinnerCoProfilePatientTurnover.getCount(); i++) {
if (spinnerCoProfilePatientTurnover.getItemAtPosition(i).equals(patient_turnover)) {
spinnerCoProfilePatientTurnover.setSelection(i);
break;
}
}
}
/*//added for retrieve image - 13/2/16
private void getCoImageProfile() {
String url = ClinicOwnerGetImage.DATA_URL+receiveSpEmail.toString().trim();
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showImageJSON(response);
bitmap = getBitmapFromUrl(imagePath);
imageViewCoProfilePageClinicImage.setImageBitmap(bitmap);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(ClinicOwnerProfilePage.this, error.getMessage().toString(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void showImageJSON(String response){
String image="";
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(ClinicOwnerGetImage.JSON_ARRAY);
JSONObject employeeData = result.getJSONObject(0);
image = employeeData.getString(ClinicOwnerGetImage.KEY_CLINIC_IMAGE);
} catch (JSONException e) {
e.printStackTrace();
}
imagePath = image;
// added for refreshing event - 5/3
if(swipeRefreshLayout.isRefreshing())
{
swipeRefreshLayout.setRefreshing(false);
}
// end of refreshing
}
public Bitmap getBitmapFromUrl(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
//end of retrieve image*/
//new image getter method - 12/3
private void getImage() {
String email = receiveSpEmail.toString();
class GetImage extends AsyncTask<String,Void,Bitmap> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(ClinicOwnerProfilePage.this,"Please wait...","Fetching Image...", true, true);
}
@Override
protected void onPostExecute(Bitmap b) {
super.onPostExecute(b);
loading.dismiss();
imageViewCoProfilePageClinicImage.setImageBitmap(b);
// added for refreshing event - 5/3
if(swipeRefreshLayout.isRefreshing())
{
swipeRefreshLayout.setRefreshing(false);
}
// end of refreshing
}
@Override
protected Bitmap doInBackground(String... params) {
String receiveSpEmail = params[0];
String add = "http://cliniclocum.org/CoGetImageProfile.php?email="+receiveSpEmail;
URL url = null;
Bitmap image = null;
try {
url = new URL(add);
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
}
GetImage gi = new GetImage();
gi.execute(email);
}
//end of new method
public void saveSpCoProfile(){
SharedPreferences preferences = getSharedPreferences("PassingCoProfile", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("passCoAddress", editTextCoProfilePageAddress.getText().toString());
editor.putString("passCoClinicName", editTextCoProfilePageName.getText().toString());
editor.commit();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnCoProfileUploadImage:
Intent CoUploadImage = new Intent(this, ClinicOwnerUploadImagePage.class);
startActivity(CoUploadImage);
break;
case R.id.btnCoProfileUpdateProfile:
if(editTextCoProfilePageName.getText().toString().equals("")|| editTextCoProfilePageAddress.getText().toString().equals("")){
Toast.makeText(this, "Please Enter Clinic Name and Address", Toast.LENGTH_LONG).show();
}
else {
String type = "CoUpdate";
String update_CoName = editTextCoProfilePageName.getText().toString();
String update_CoAddress = editTextCoProfilePageAddress.getText().toString();
String update_CoClinicOwnerName = editTextCoProfilePageClinicOwnerName.getText().toString();
String update_CoFacilities = editTextCoProfileFacilities.getText().toString();
String update_CoPatientTurnover = passedSpPatientTurnover;
CoUpdateBackgroundWorker coUpdateBackgroundWorker = new CoUpdateBackgroundWorker(this);
coUpdateBackgroundWorker.execute(type, receiveSpEmail, update_CoName, update_CoAddress, update_CoClinicOwnerName, update_CoFacilities, update_CoPatientTurnover);
coUpdateBackgroundWorker.setOnTaskFinishedListener(new CoUpdateBackgroundWorker.OnTaskFinishedListener() {
@Override
public void onTaskFinished(String result) {
switch (result) {
case "Profile Updated":
saveSpCoProfile();
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
Intent successIntent = new Intent(ClinicOwnerProfilePage.this, ClinicOwnerMainPage.class);
startActivity(successIntent);
break;
default:
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
break;
}
}
});
}
break;
}
}
@Override
public void onBackPressed() {
Intent backIntent = new Intent(ClinicOwnerProfilePage.this, ClinicOwnerMainPage.class);
startActivity(backIntent);
}
}
公共类ClinicOwnerProfilePage扩展AppCompativeActivity实现View.OnClickListener{
TextView textViewUserRole;
EditText editTextCoProfilePageName、editTextCoProfilePageAddress、editTextCoProfilePageClinicOwnerName、editTextCoProfileFacilities;
Button Button Profile上载ClinicImage,Button Profile更新配置文件;
喷丝器喷丝器旋转;
阵列适配器;
私有图像查看图像查看合作文件页面临床图像;
私有位图;
字符串图像路径;
私有对话框加载;
字符串receiveSpEmail;
字符串passedsPatientRevolution;
//为刷新事件添加了
SwipeRefreshLayout SwipeRefreshLayout;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u clinic\u owner\u profile\u页面);
textViewUserRole=(TextView)findViewById(R.id.tvCoUserRole);
editTextCoProfilePageName=(EditText)findViewById(R.id.etCoProfileName);
editTextCoProfilePageAddress=(EditText)findViewById(R.id.etCoProfileAddress);
editTextCoProfilePageClinicOwnerName=(EditText)findViewById(R.id.etCoProfileClinicOwnerName);
editTextCoProfileFacilities=(EditText)findViewById(R.id.etCoProfileFacilities);
buttonCoProfileUploadClinicImage=(按钮)findViewById(R.id.btnCoProfileUploadImage);
buttonCoProfileUpdateProfile=(Button)findViewById(R.id.btnCoProfileUpdateProfile);
ButtonConProfileUploadClinicImage.setOnClickListener(此);
buttonCoProfileUpdateProfile.setOnClickListener(此);
spinnerCoProfilePatientTurnover=(Spinner)findViewById(R.id.spCoProfileUpdatePatientTurnover);
adapter=ArrayAdapter.createFromResource(这个,R.array.SpinnerCoUpdatePatientTurnover,android.R.layout.simple\u spinner\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头旋转接头(接头);
spinnerCoProfilePatientTurnover.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
PassedSppatientOverflower=spinnerCoProfilePatientTurnover.getItemAtPosition(position.toString();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
receiveSpEmail();
getCoProfileData();
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
imageViewCoProfilePageClinicImage=(ImageView)findViewById(R.id.ivCoProfileClinicImage);
//getCoImageProfile();
getImage();
/*imageViewCoProfilePageClinicImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//要使用intent发送位图,我们需要先将其更改为ByteArray,然后将ByteArray放入intent extra
ByteArrayOutputStream=新建ByteArrayOutputStream();
compress(bitmap.CompressFormat.PNG,25,流);
byte[]byteArray=stream.toByteArray();
Intent fullScreenIntent=新意图(ClinicOwnerProfilePage.this,CoImageFullScreen.class);
fullScreenIntent.putExtra(“CoImage”,byteArray);
startActivity(全屏意图);
}
});*/
//添加了拉刷新功能
swipeRefreshLayout=(swipeRefreshLayout)findViewById(R.id.swipe);
swipeRefreshLayout.setOnRefreshListener(新的swipeRefreshLayout.OnRefreshListener()){
@凌驾
公共void onRefresh(){
swipeRefreshLayout.setRefreshing(true);
(新的处理程序()).postDelayed(新的可运行(){
@凌驾
公开募捐{
getImage();
}
}, 3000);
}
});
//刷新事件结束
}
public void receiveSpEmail(){
SharedReferences首选项=GetSharedReferences(“PassingEmail”,MODE_PRIVATE);
receiveSpEmail=preferences.getString(“passEmail”、“.”);
textViewUserRole.setText(接收邮件);
}
私有void getCoProfileData(){
loading=ProgressDialog.show(这是“请稍候…”、“正在获取…”、false、false);
String url=ClinicOwnerGetProfile.DATA_url+receiveSpEmail.toString().trim();
StringRequest StringRequest=新的StringRequest(url,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
loading.dispose();
showJSON(响应);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(ClinicOwnerProfilePage.this,error.getMessage().toString(),Toast.LENGTH_LONG.show();
}
});
RequestQueue RequestQueue=Volley.newRequestQueue(this);
添加(stringRequest);
}
私有void showJSON(字符串响应){
字符串clinic_name=“”;
字符串地址=”;
字符串clinicownername=“”;
字符串=”;
字符串patient_-overship=“”;
试一试{
JSONObject JSONObject=新JSONObject(响应);
JSONArray result=jsonObject.getJSONArray(Cli
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission
android:name="com.example.XYZ.AppName.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.example.XYZ.AppName.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@drawable/cricon"
android:label="@string/activity_logoN"
android:supportsRtl="true"
android:largeHeap="true"
android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize"
android:theme="@style/AppTheme">