android - 게임 - 어도비 에어 란




as3/flex mobile의 응용 프로그램 저장소 디렉토리에서 새로 작성한 파일을 열려면 어떻게해야합니까? (3)

임 (Flex 4.12 SDK, flashbuilder 4.5 사용, iOS 및 Android 용 앱 만들기, 안드로이드 htc 1 주로 테스트) ... 그리고 카메라를 사용하여 파일을 캡처하는 중 ... Im 그 이미지 저장하기 응용 프로그램 저장소 디렉토리에, 그리고 기본 웹 브라우저에서 이미지를 열거 나 네이티브 대화 상자 (안드로이드 사용자)를 선택하여 웹 브라우저를 선택하고 싶습니다 ... 지금 열리는 방법은 정말 중요합니다 - Im 주로 장치에 '액세스'하고 내 항공 응용 프로그램 외부로 '로드'하려고합니다.

내가 가진 코드를 heres :

                var fs2 : FileStream = new FileStream();
                fs2.addEventListener(Event.CLOSE, fileCompleteHandler); 
                var targetFile : File = File.applicationStorageDirectory.resolvePath("test.jpg");
                fs2.openAsync(targetFile, FileMode.WRITE);
                fs2.writeBytes(myBMDByteArray,0,myBMDByteArray.length);
                fs2.close();

새로 생성 된 파일의 닫기를 감지하는 이벤트 리스너의 경우 :

                function fileCompleteHandler(e:Event):void {
                    trace('File saved.');
                    trace('exists? ' + targetFile.exists);
                    trace('the url: ' + targetFile.url);
                    trace('path: ' + targetFile.nativePath);
                    navigateToURL(new URLRequest(targetFile.url));
                }

이 수신기에서 다음 정보를 다시 얻습니다.

  • 파일이 저장되었습니다.
  • 존재 하는가? 참된
  • url : app-storage : /test.jpg
  • 경로 : /data/data/air.com.xxxxx.apptesting.debug/com.xxxxx.apptesting.debug/Local Store / test.jpg

... 문제는 navigateToURL이 파일이 저장된 위치에 액세스 할 수 없다는 것입니다 (프로토콜은 브라우저에서 file : /// data / data / air.com / xxx ...로 표시됨)

navigateToURL을 사용하여 웹 브라우저에서 새로 생성 된 파일에 액세스하거나 장치가 파일 (예 : .JPG 파일)과 연결하는 기본 응용 프로그램에 액세스하려면 어떻게해야합니까? 또한 새로 만든 이미지를 카메라 롤에 추가하는 데 성공했지만 원래의 카메라 롤이나 장치가 선택한 모든 응용 프로그램을 .jpg 형식으로 사용자에게 표시하는 방법을 알지 못했습니다.

비트 맵 데이터를 잘 참조하여 내 앱 내부에 사용자에게 이미지를 표시 할 수 있습니다. 사용자가 기기에서 만드는 실제 파일에 액세스 할 수있게하려는 것입니다.

나는 심지어 (urlLoader를 통해) 비트 맵 데이터를 base64 인코딩으로 게시 한 다음 서버 측에서 파일을 만들고 그 URL을로드하지만 인코딩과 여행을 서버와주고 받기 때문에 이미지를 사용자에게 제공하는 데 성공했습니다. 오버 헤드가 있고 너무 오래 걸리며 길쭉한 과정을 피하고 싶습니다.

누구든지 제공 할 수있는 도움에 감사드립니다. 어떤 경우에 더 구체적으로 설명해야하는지 알려주세요.


나의 첫 번째 직감은 응용 프로그램의 내용에 openWith 기능을 사용할 수 있도록 응용 프로그램 설명자에 적절한 사용자 권한을 지정해야한다는 것입니다.

IOS와 Android의 경우이를 구체적으로 지정해야한다는 것을 기억하십시오.


문제를 해결했습니다. 다음을 사용하여 documentsDirectory에 파일을 저장 / 작성할 수있었습니다.

var targetFile : File = File.documentsDirectory.resolvePath('test.jpg');

그리고

navigateToURL(new URLRequest(targetFile.url));

그리고 지금은 괜찮습니다. 바라기를 그것은 다른 누군가를 돕는다! 스토리지 디렉토리는 작동해야하지만 지금까지는 내가 작성한 파일을 거기서 읽었을 것입니다 ... 어쩌면 파일을 열려면 파일 시스템의 '안전한'위치 (예 : SD 카드)로 파일을 복사해야합니까? ... iOS에서 테스트 할 것입니다. 이제 - 해당 OS에서 모든 것이 잘 작동하길 바랍니다. 이 일에 열중 한 모든 분들께 감사드립니다.


applicationStorageDirectory 는 Android 또는 iOS를 사용할 때도 속한 애플리케이션에서만 액세스 할 수 있습니다. navigateToURL() 은 요청에 대해 디렉토리를 액세스 할 수없는 기본 브라우저로 넘깁니다.

documentsDirectory 는 Android의 공개 디렉토리이지만 iOS에는 공개 디렉토리가 아닙니다. 따라서 두 플랫폼 모두에 사용할 수 없습니다. 불행하게도 미리 컴파일 된 파일 경로 중 하나도 iOS의 공개 디렉토리를 가리 키지 않습니다. 미리 컴파일 된 모든 경로를 설명하는 표를 찾을 수 있습니다.







flash-builder