0

나는 티타늄 SDK 2.1.3을 사용하고 있으며 Android 용으로 배포 중이므로 this article을 따라 application/*, image/* 및 audio/*와 같은 MIME 유형을 열 수있는 응용 프로그램 목록에 내 응용 프로그램을 포함 시켰습니다. 그것은 내 안드로이드 매니페스트는 다음과 같이 만들어 :Android - Titanium 2.1.3으로 이메일 첨부 파일을 여는 방법은 무엇입니까?

이제
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="nenvo.com.desktop" android:versionCode="1" 
    android:versionName="1"> 
    <uses-sdk android:minSdkVersion="8" /> 

    <!-- TI_MANIFEST --> 

    <application android:icon="@drawable/appicon" 
     android:label="Desktop Lite" android:name="DesktopLiteApplication" 
     android:debuggable="false"> 

     <!-- TI_APPLICATION --> 

     <activity android:name=".DesktopLiteActivity" 
      android:label="Desktop Lite" android:theme="@style/Theme.Titanium" 
      android:configChanges="keyboardHidden|orientation"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <data android:scheme="content" /> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.BROWSABLE" /> 
       <!-- open any mime type file --> 
       <data android:mimeType="application/*" /> 
       <data android:mimeType="audio/*" /> 
       <data android:mimeType="image/*" /> 
       <data android:mimeType="text/*" /> 
       <data android:mimeType="video/*" /> 
      </intent-filter> 
     </activity> 



     <activity android:name="org.appcelerator.titanium.TiActivity" 
      android:configChanges="keyboardHidden|orientation" /> 
     <activity android:name="org.appcelerator.titanium.TiTranslucentActivity" 
      android:configChanges="keyboardHidden|orientation" 
      android:theme="@android:style/Theme.Translucent" /> 
     <activity android:name="org.appcelerator.titanium.TiModalActivity" 
      android:configChanges="keyboardHidden|orientation" 
      android:theme="@android:style/Theme.Translucent" /> 
     <activity android:name="ti.modules.titanium.ui.TiTabActivity" 
      android:configChanges="keyboardHidden|orientation" /> 
     <activity android:name="ti.modules.titanium.ui.android.TiPreferencesActivity" /> 

     <service android:name="org.appcelerator.titanium.analytics.TiAnalyticsService" 
      android:exported="false" /> 


    </application> 

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> 
    <uses-permission android:name="android.permission.VIBRATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 


</manifest> 

이메일 첨부 파일을 열 수하려고 할 때 내 응용 프로그램이 실행될 때, 문제는 내가 노력하고있어 파일을 검색하는 방법을 모르겠입니다 내가 의도에 대한 데이터를 검색하려고

activity.addEventListener('start', function() { 
    Ti.API.log('*** Start Event Called ***'); 
    var args = activity.getIntent().getData(); // this is null 
    functions.handleFunction(args); 
}); 

activity.addEventListener('resume', function() { 
    Ti.API.log('*** Resume Event Called ***'); 
    var args = activity.getIntent().getData(); //this is also null 
    functions.handleFunction(args); 
}); 

, 나는 그 결과로서 null를 가지고 : 열, 나는 나의 시작에서 다음 내 안드로이드 응용 프로그램에 대한 이벤트를 다시 시작 했어요.

{"flags":0,"type":null,"data":null,"action":null}

왜 내가 텐트에 데이터가 수신되지 않는 경우 : 나는 텐트 오브젝트를 표시 할 때, 나는 다음과 같은거야? 내가 뭔가 잘못하고 있는거야?

편집

나는 내가 특정 파일을 열 수있는 응용 프로그램 목록에서 내 응용 프로그램을 열 때이 전에 폐쇄 된 것처럼, 내 응용 프로그램을 시작할 것입니다 것으로 나타났습니다 (이 이전에 열었던 된 경우에도 마찬가지) . 내가 그걸 어떻게 엽니까

content://com.android.email.attachmentprovider/1/2/RAW

을 : I는 다음과 놀랍게도 내가 의도의 데이터를 가지고, 내 app.js 파일과이로드하는 동안 텐트를 얻기 위해 노력했다? 해당 주소에서 파일을 검색하여 응용 프로그램 디렉토리에 저장할 수있는 방법은 무엇입니까?

편집 2

는이 같은 그 주소에서 파일 얻기 위해 노력 :

var tmpFile = Ti.Filesystem.getFile(String(currentActivity.getIntent().getData()));

을하지만 내가 가진 것은이 안쪽의 File 객체이었다

{ 
    "writable": false, 
    "symbolicLink": false, 
    "parent": null, 
    "readonly": true, 
    "nativePath": "content://com.android.email.attachmentprovider/1/2/RAW", 
    "executable": false, 
    "name": "api-eventos.txt", 
    "directoryListing": null, 
    "hidden": false, 
    "size": 0 
} 

원본 파일의 이름이 표시되지만 크기는 0이며 같은 모양이 아닙니다. 원본 파일에 대한 정보가 있으면 읽으려고했는데 결과적으로 null이되었습니다. 첨부 파일 주소에서 파일을 가져 오는 방법은 무엇입니까?

답변

2

마지막으로이를 해결하는 방법을 찾았습니다. 내용은 URI를 반환하지만 파일을 가져올 때 사용할 수는 있지만 읽을 수는 없지만 다른 파일에 복사 할 수는 있습니다. 그런 다음 새 파일을 읽고 다른 File 객체처럼 사용할 수 있습니다. 내 코드는 다음과 같습니다.

var currentActivity = Ti.Android.currentActivity; 
var passedData = currentActivity.getIntent().getData(); 
if(passedData !== null) 
{ 
    var tmpFile = Ti.Filesystem.getFile(String(passedData)); 
    var fileData = Ti.Filesystem.getFile(Ti.Filesystem.getTempDirectory() + tmpFile.name); 
    tmpFile.copy(fileData.nativePath); //the copy can be handled like any other normal file 
    Ti.App.Properties.setString('passedData', JSON.stringify(fileData)); // in my case I place it in a Ti.App.Property for later use 
} 

나는이 상황이 다른 사람들을 돕기를 바랍니다. 이것은 2.1.3 및 3.0 모두에서 작동합니다.