В предыдущем вопросе (Возьмите скриншот и сохраните Android) я узнал, как сохранить файл на SD-карту устройства Android, и он работает правильно. Теперь мне нужно знать, как найти файл программно по имени, а затем загрузить файл в facebook или twitter. В настоящее время моя самая большая проблема - просто найти файл.
Загрузка файла Android по имени с SD-карты
Ответы (2)
Чтобы получить путь к файлу из галереи
String filepath; // filepath contains path of the file
public void getImage()
{
// To open up a gallery browser
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),1);
// To handle when an image is selected from the browser, add the following to your Activity
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
// currImageURI is the global variable I'm using to hold the content:// URI of the image
Uri currImageURI = data.getData();
File file = new File(getRealPathFromURI(currImageURI));
if (file.exists())
{
filepath=file.getAbsolutePath();
}
else
{
System.out.println("File Not Found");
}
}
}
}
public String getRealPathFromURI(Uri contentUri)
{
// can post image
String [] proj={MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery( contentUri,
proj, // Which columns to return
null, // WHERE clause; which rows to return (all rows)
null, // WHERE clause selection arguments (none)
null); // Order-by clause (ascending by name)
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
Чтобы получить изображение с SD-карты
File file = new File(android.os.Environment.getExternalStorageDirectory(),"MyDraw");
if(file.exists())
{
File myfile = new File(file.getAbsoluteFile()+File.separator+"name.png");
String path = myfile.getAbsolutePath();
}
Для загрузки файла на сервер. Я не знаю, как загрузить файл в facebook или twitter. В общем, чтобы загрузить файл на сервер
public void upload(String filepath)
{
try
{
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost("youe url");
File file = new File(filepath);
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file, "image/jpeg");
mpEntity.addPart("userfile", cbFile);
httppost.setEntity(mpEntity);
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
}
catch(Exception e)
{
e.printStackTrace();
}
}
person
Raghunandan
schedule
15.05.2013
Нужно ли мне знать весь путь и все? Или мне просто нужно знать, как пользователь назвал картинку?
- person James; 17.05.2013
@James, вам нужен путь к файлу для загрузки изображения на сервер. Путь даст вам расположение формы файла, в которую вы загружаете тот же материал, что и для загрузки изображения с рабочего стола.
- person Raghunandan; 17.05.2013
@James, код которого указан в ответе выше. Вы пробовали выше??
- person Raghunandan; 17.05.2013
Сейчас пробую, но вижу в чем может быть проблема. Он проверяет наличие файла и берет файл, но, скорее всего, там будет 2 или более изображений.
- person James; 17.05.2013
@James, это не имеет значения, поскольку вы выбираете путь, используя имя файла.
- person Raghunandan; 17.05.2013
вот нубский вопрос: пожалуйста, укажите классы, которые нам нужно импортировать!
- person rptwsthi; 21.07.2013
@rptwsthi какую IDE вы используете. если я включу весь импорт, то пост будет огромным. это не нужно, и вы должны знать, что импортировать. это основное. Если вы используете eclipse, щелкните правой кнопкой мыши --›source--› организовать импорт и исправить импорт или ctr+shift+o
- person Raghunandan; 21.07.2013
Спасибо, и я полностью согласен с этой огромной частью, и парень, сидящий рядом со мной, только что сказал мне об этом. Но не удалось разрешить эти два класса:
MultipartEntity
, ContentBody
.
- person rptwsthi; 21.07.2013
ищите apache commons httpclient4.2.jar для более старых версий Android. для новых версий http включен в структуру.
- person Raghunandan; 21.07.2013
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ContentBody
это то, что я использовал из httpclient4.2.jar.
- person Raghunandan; 21.07.2013
Спасибо за такую отзывчивость и помощь!
- person rptwsthi; 21.07.2013
сначала вам нужно знать путь к изображению, а затем использовать facebook sdk для загрузки изображения в профиль
https://developers.facebook.com/android/
в SDK есть один пример для загрузки изображения
person
Pachuco Digital
schedule
15.05.2013
@james вам нужно получить изображение из галереи? или вам не нужно получать изображение с SD-карты, если вы знаете имя файла
- person Raghunandan; 15.05.2013
@James, чтобы позволить пользователю выбирать из галереи, вы можете использовать первую часть кода. это даст вам путь к выбранному изображению. если вы знаете имя файла в SD-карте, вы можете получить путь, используя вторую часть. Чтобы загрузить файл на сервер в целом, вы можете использовать почтовый запрос http
- person Raghunandan; 15.05.2013