首页 > 解决方案 > 图像未上传到我的解析服务器

问题描述

公共类 userListActivity 扩展 AppCompatActivity { public void getPhoto() { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, 1); }

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == 1) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            getPhoto();
        }
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();

    menuInflater.inflate(R.menu.share_menu, menu);

    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == R.id.share) {
        if (checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
        } else {
            getPhoto();
        }
    } else if (item.getItemId() == R.id.logout) {
        ParseUser.logOut();

        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        startActivity(intent);
    }

    return super.onOptionsItemSelected(item);
}

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

    setTitle("User Feed");

    final ListView listView = findViewById(R.id.listView);
    final ArrayList<String> usernames = new ArrayList<String>();
    final ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, usernames);

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Intent intent = new Intent(getApplicationContext(), userFeedActivity.class);
            intent.putExtra("username", usernames.get(i));
            startActivity(intent);
        }
    });

    ParseQuery<ParseUser> query = ParseUser.getQuery();

    query.whereNotEqualTo("username",ParseUser.getCurrentUser().getUsername());
    query.addAscendingOrder("username");

    query.findInBackground(new FindCallback<ParseUser>() {
        @Override
        public void done(List<ParseUser> objects, ParseException e) {
            if (e == null) {
                if (objects.size() > 0) {
                    for (ParseUser user : objects) {
                        usernames.add(user.getUsername());
                    }
                    listView.setAdapter(arrayAdapter);
                }
            } else {
                e.printStackTrace();
            }
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Uri selectedImage = data.getData();

    if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);

            Log.i("Image Selected", "Good work");

            ByteArrayOutputStream stream = new ByteArrayOutputStream();

            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);

            byte[] byteArray = stream.toByteArray();

            ParseFile file = new ParseFile("image.png", byteArray);

            ParseObject object = new ParseObject("Image");

            object.put("image", file);

            object.put("username", ParseUser.getCurrentUser().getUsername());


            object.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    if (e == null) {
                        Toast.makeText(userListActivity.this, "Image has been shared!", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(userListActivity.this, "There has been an issue uploading the image :(", Toast.LENGTH_SHORT).show();
                    }
                }
            });

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

} 公共类 MainActivity 扩展 AppCompatActivity 实现 View.OnClickListener,View.OnKeyListener {

Boolean signUpModeActive = true;
TextView loginTextView;
EditText usernameEditText;
EditText passwordEditText;

public void showUserList() {
    Intent intent = new Intent(getApplicationContext(), userListActivity.class);
    startActivity(intent);
}

@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {

    if (i == KeyEvent.KEYCODE_ENTER && keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
        signUpClicked(view);
    }

    return false;
}

@Override
public void onClick(View view) {
    if (view.getId() == R.id.loginTextView) {

        Button signUpButton = findViewById(R.id.signUpButton);

        if (signUpModeActive) {
            signUpModeActive = false;
            signUpButton.setText("Login");
            loginTextView.setText("or, Sign Up");
        } else {
            signUpModeActive = true;
            signUpButton.setText("Sign Up");
            loginTextView.setText("or, Login");
        }

    } else if (view.getId() == R.id.logoimageView || view.getId() == R.id.backgroudLayout) {
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),0);
    }
}

public void signUpClicked(View view) {

    if (usernameEditText.getText().toString().matches("") || passwordEditText.getText().toString().matches("")) {
        Toast.makeText(this, "A username and a password are required.",Toast.LENGTH_SHORT).show();

    } else {
        if (signUpModeActive) {
            ParseUser user = new ParseUser();
            user.setUsername(usernameEditText.getText().toString());
            user.setPassword(passwordEditText.getText().toString());

            user.signUpInBackground(new SignUpCallback() {
                @Override
                public void done(ParseException e) {
                    if (e == null) {
                        Log.i("Signup", "Success");
                        showUserList();
                    } else {
                        Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }
            });
        } else {
            // Login
            ParseUser.logInInBackground(usernameEditText.getText().toString(), passwordEditText.getText().toString(), new LogInCallback() {
                @Override
                public void done(ParseUser user, ParseException e) {
                    if (user != null) {
                        Log.i("Login","ok!");
                        showUserList();
                    } else {
                        Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setTitle("Instagram");

    loginTextView = findViewById(R.id.loginTextView);
    loginTextView.setOnClickListener(this);
    usernameEditText = findViewById(R.id.usernameEditText);
    passwordEditText = findViewById(R.id.passwordEditText);
    ImageView logoImageView = findViewById(R.id.logoimageView);
    ConstraintLayout backgroundLayout = findViewById(R.id.backgroudLayout);
    logoImageView.setOnClickListener(this);
    backgroundLayout.setOnClickListener(this);
    passwordEditText.setOnKeyListener(this);

    if (ParseUser.getCurrentUser() != null) {
        showUserList();
    }

    ParseAnalytics.trackAppOpenedInBackground(getIntent());
}

公共类 userFeedActivity 扩展 AppCompatActivity {

LinearLayout linLayout;

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

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

    setTitle(username + "'s Photos");

    linLayout = findViewById(R.id.linLayout);



    ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Image");

    query.whereEqualTo("username", username);
    query.orderByDescending("createdAt");

    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null && objects.size() > 0) {
                for (ParseObject object : objects) {
                    ParseFile file = (ParseFile) object.get("image");

                    file.getDataInBackground(new GetDataCallback() {
                        @Override
                        public void done(byte[] data, ParseException e) {
                            if (e == null && data != null) {
                                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);
                                ImageView imageView = new ImageView(getApplicationContext());

                                imageView.setLayoutParams(new ViewGroup.LayoutParams(
                                        ViewGroup.LayoutParams.MATCH_PARENT,
                                        ViewGroup.LayoutParams.WRAP_CONTENT
                                ));

                                imageView.setImageBitmap(bitmap);

                                linLayout.addView(imageView);
                            }
                        }
                    });
                }
            }
        }
    });





}

我编辑了它这是我的整个代码现在请帮助

标签: javaandroid-studioparse-platforminstagram

解决方案


推荐阅读