Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AsyncTask类中的startActivityForResult和onActivityResult_Android_Android Asynctask_Ftp_Onactivityresult_Startactivityforresult - Fatal编程技术网

Android AsyncTask类中的startActivityForResult和onActivityResult

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

我想在FTP中推送图库的图像,我正在使用
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
。那就是你要去的地方