Android AsyncTask类中的startActivityForResult和onActivityResult
我想在FTP中推送图库的图像,我正在使用Android AsyncTask类中的startActivityForResult和onActivityResult,android,android-asynctask,ftp,onactivityresult,startactivityforresult,Android,Android Asynctask,Ftp,Onactivityresult,Startactivityforresult,我想在FTP中推送图库的图像,我正在使用FTPClient类,并试图创建一个活动来获取图像,但我找不到解决方案 我使用它来创建活动: public void abrirGaleria(){ Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); ((Activity) context).startActivityFor
FTPClient
类,并试图创建一个活动来获取图像,但我找不到解决方案
我使用它来创建活动:
public void abrirGaleria(){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
((Activity) context).startActivityForResult(
Intent.createChooser(intent, "Seleccione una imagen"),
SELECT_FILE);
}
我试着用这个来得到结果。但是我不能调用super.onActivityResult
,因为该类是从AsyncTask
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
Uri selectedImageUri = null;
Uri selectedImage;
String filePath = null;
switch (requestCode) {
case SELECT_FILE:
if (resultCode == Activity.RESULT_OK) {
selectedImage = imageReturnedIntent.getData();
String selectedPath=selectedImage.getPath();
if (requestCode == SELECT_FILE) {
if (selectedPath != null) {
rutaCompleta = new File(selectedPath);
}
}
}
break;
}
}
我能做什么
全班同学:
public class FTPSubir extends AsyncTask<Void , Integer, Long> {
private static final int SELECT_FILE = 1;
private String ip; //Almacena la dirección del servidor
private String usuario; //Almacena el nombre de usuario
private String contrasena; //Almacena la contraseña del usuario
FTPClient ftpClient; //Crea la conexión con el servidor
BufferedInputStream bufferIn; //Crea una buffer de lectura
BufferedOutputStream bufferOut; //Crea una buffer de escritura
File rutaCompleta; //Almacena la ruta completa del archivo
Context context; //Almacena el contexto de la aplicacion
String nombreArchivo;
/**
* Crea una instancia de FTP sin credenciales
*/
public FTPSubir(String ip, Context context) {
//Inicialización de campos
this.ip = ip;
usuario = USUARIO;
contrasena = PASS;
ftpClient = null;
bufferIn = null;
bufferOut = null;
rutaCompleta = null;
this.context = context;
}
/**
* Obtiene el nombre de usuario
* @return El nombre de usuario
*/
public String getUsuario() {
return usuario;
}
/**
* Establece el nombre de usuario
* @param usuario El nombre de usuario
*/
public void setUsuario(String usuario) {
this.usuario = usuario;
}
/**
* Obtiene la contraseña de usuario
* @return La contraseña de usuario
*/
public String getContrasena() {
return contrasena;
}
/**
* Establece la contraseña de usuario
* @param contrasena La contraseña de usuario
*/
public void setContrasena(String contrasena) {
this.contrasena = contrasena;
}
/**
* Realiza el login en el servidor
* @return Verdad en caso de haber realizado login correctamente
* @throws SocketException
* @throws IOException
*/
public boolean login () throws IOException {
//Establece conexión con el servidor
System.out.println("Conectando . . .");
try{
ftpClient = new FTPClient();
ftpClient.connect(ip);
}
catch (Exception e){
e.printStackTrace();
//Informa al usuario
System.out.println("Imposible conectar . . .");
return false; //En caso de que no sea posible la conexion
}
//Hace login en el servidor
ftpClient.enterLocalPassiveMode();
if (ftpClient.login(usuario, contrasena)){
//Informa al usuario
System.out.println("Login correcto . . .");
return true; //En caso de login correcto
}
else{
//Informa al usuario
System.out.println("Login incorrecto . . .");
return false; //En caso de login incorrecto
}
}
/**
* Sube un archivo al servidor FTP si previamente se ha hecho login correctamente
* @return Verdad en caso de que se haya subido con éxito
* @throws IOException
*/
public boolean SubirArchivo () throws IOException{
ftpClient.enterLocalActiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//Cambia la carpeta Ftp
if (ftpClient.changeWorkingDirectory("ftp")){
//Informa al usuario
System.out.println("Carpeta ftp cambiada . . .");
//Crea un buffer hacia el servidor de subida
bufferIn = new BufferedInputStream(new FileInputStream(rutaCompleta));
if (ftpClient.storeFile(rutaCompleta.getName(), bufferIn)){
//Informa al usuario
System.out.println("Archivo subido . . .");
bufferIn.close(); //Cierra el bufer
return true; //Se ha subido con éxito
}
else{
//Informa al usuario
System.out.println("Imposible subir archivo . . .");
bufferIn.close(); //Cierra el bufer
return false; //No se ha subido
}
}
else{
//Informa al usuario
System.out.println("Carpeta ftp imposible cambiar . . .");
return false; //Imposible cambiar de directo en servidor ftp
}
}
public void abrirGaleria(){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
((Activity) context).startActivityForResult(
Intent.createChooser(intent, "Seleccione una imagen"),
SELECT_FILE);
}
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
Uri selectedImageUri = null;
Uri selectedImage;
String filePath = null;
switch (requestCode) {
case SELECT_FILE:
if (resultCode == Activity.RESULT_OK) {
selectedImage = imageReturnedIntent.getData();
String selectedPath=selectedImage.getPath();
if (requestCode == SELECT_FILE) {
if (selectedPath != null) {
rutaCompleta = new File(selectedPath);
}
}
}
break;
}
}
@Override
protected Long doInBackground(Void... voids) {
try {
login();
abrirGaleria();
SubirArchivo();
} catch (IOException e) {
e.printStackTrace();
System.out.println("Imposible conectar . . .");
}
return null;
}
@Override
protected void onPostExecute(Long result) {
//Termina proceso
Log.i("TAG" , "Termina proceso de lectura de archivos.");
}
公共类FTPSubir扩展异步任务{
私有静态最终int选择_文件=1;
私有字符串ip;//Almacena la dirección del servidor
私有字符串usuario;//Almacena el nombre de usuario
私有字符串contrasena;//Almacena la contraseña del usuario
FTPClient FTPClient;//Crea la conexión con el servidor
BufferedInputStream bufferIn;//Crea una buffer de讲师
BufferedOutputStream bufferOut;//Crea una buffer de escritura
文件rutaCompleta;//Almacena la ruta completa del archivo
Context;//Almacena el contexto de la aplicacion
胸围线;
/**
*我的孩子们都很快乐
*/
公共FTPSubir(字符串ip,上下文){
//坎波斯城市酒店
this.ip=ip;
乌萨里奥=乌萨里奥;
contrasena=通过;
ftpClient=null;
bufferIn=null;
bufferOut=null;
rutaCompleta=null;
this.context=上下文;
}
/**
*乌萨里奥酒店
*@return El nombre de usuario
*/
公共字符串getUsuario(){
返回usuario;
}
/**
*乌萨里奥庄园酒店
*@param usuario El nombre de usuario
*/
public void setUsuario(字符串usuario){
this.usuario=usuario;
}
/**
*乌萨里奥之家酒店
*@return La contraseña de usuario
*/
公共字符串getContrasena(){
反向返回;
}
/**
*乌萨里奥公寓
*@param contrasena La contraseña de usuario
*/
public void setContrasena(字符串contrasena){
this.contrasena=contrasena;
}
/**
*Realisa el login en el servidor
*@return Verdad en caso de haber realizando登录更正
*@SocketException
*@抛出异常
*/
公共布尔登录()引发IOException{
//服务公司
System.out.println(“Conectando…”);
试一试{
ftpClient=新的ftpClient();
FTP客户端连接(ip);
}
捕获(例外e){
e、 printStackTrace();
//乌萨里奥信息
System.out.println(“不可能的连接…”);
返回false;//不可能在海上航行
}
//在施维多尔酒店
ftpClient.enterLocalPassiveMode();
if(ftpClient.login(usuario,contrasena)){
//乌萨里奥信息
System.out.println(“登录更正…”);
返回true;//En caso de login correcto
}
否则{
//乌萨里奥信息
System.out.println(“登录不正确…”);
返回false;//En caso de login incorrecto
}
}
/**
*文件服务器FTP在注册前必须正确
*@return Verdad en caso de que se haya subido conéxito
*@抛出异常
*/
公共布尔SubirArchivo()引发IOException{
ftpClient.enterLocalActiveMode();
ftpClient.setFileType(FTP.BINARY文件类型);
//坎比亚地毯酒店
if(ftpClient.changeWorkingDirectory(“ftp”)){
//乌萨里奥信息
System.out.println(“地毯ftp cambiada…”);
//苏比达服务中心
bufferIn=newbufferedInputStream(newfileInputStream(rutaCompleta));
if(ftpClient.storeFile(rutaCompleta.getName(),bufferIn)){
//乌萨里奥信息
System.out.println(“Archivo subido…”);
bufferIn.close();//Cierra el-bufer
返回true;//Se ha subido conéxito
}
否则{
//乌萨里奥信息
System.out.println(“不可能的subir archivo…”);
bufferIn.close();//Cierra el-bufer
返回false;//没有se ha subido
}
}
否则{
//乌萨里奥信息
System.out.println(“地毯ftp不可能的柬埔寨…”);
返回false;//不可能的cambiar de directo en servidor ftp
}
}
公共空间abrirGaleria(){
意图=新意图();
intent.setType(“image/*”);
intent.setAction(intent.ACTION\u GET\u CONTENT);
((活动)上下文)。startActivityForResult(
Intent.createChooser(Intent,“Seleccione una imagen”),
选择_文件);
}
ActivityResult上受保护的void(int请求代码、int结果代码、,
意图(返回内容){
super.onActivityResult(请求代码、结果代码、图像返回内容);
Uri selectedImageUri=null;
Uri选择图像;
字符串filePath=null;
开关(请求代码){
案例选择文件:
if(resultCode==Activity.RESULT\u确定){
选择edimage=imageReturnedIntent.getData();
String selectedPath=selectedImage.getPath();
if(requestCode==选择_文件){
如果(selectedPath!=null){
rutaCompleta=新文件(selectedPath);
}
}
}
打破
}
}
@凌驾
受保护的长doInBackground(空…空){
试一试{
登录();
白头翁();
腋下();
}捕获(IOE异常){
e、 printStackTrace();
System.out.println(“不可能的连接…”);
}
返回null;
}
@凌驾
受保护的void onPostExecute(长结果){
//直肠终末
Log.i(“标签”、“文件归档过程终端”);
}
}您在
((活动)上下文)中引用的活动应覆盖onActivityResult
。那就是你要去的地方