Apportableを使用してAndroidでメール添付ファイルを開くことができません -- android フィールド と apportable フィールド 関連 問題

Can't open mail attachment on Android using Apportable












1
vote

問題

日本語

私は郵便添付を開いた。以下の方法でURLを受信する

<事前> <コード> - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

このURLからデータを取得できない

<事前> <コード> NSData *data = [NSData dataWithContentsOfFile:[url path]] // data is nil

受信URL

<事前> <コード> content://gmail-ls/mymail@gmail.com/messages/1/attachments/0.0/BEST/false
英語

I've tried open mail attachment. Receive url in following method

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 

But can't get data from this url

NSData *data = [NSData dataWithContentsOfFile:[url path]] // data is nil 

Received url

content://gmail-ls/mymail@gmail.com/messages/1/attachments/0.0/BEST/false 
</div
     

回答リスト

3
 
vote
vote
ベストアンサー
 

この問題を解決するためにAndroid SDKを使用しました。 apportable こちら

これは私のJavaコード

です <事前> <コード> static private byte[] readBytes(InputStream inputStream) throws IOException { // this dynamically extends to take the bytes you read ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); // this is storage overwritten on each iteration with bytes int bufferSize = 1048576; byte[] buffer = new byte[bufferSize]; // we need to know how may bytes were read to write them to the byteBuffer int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } // and then we can return your byte array. return byteBuffer.toByteArray(); } public byte[] dataFromUrl(String path, Activity activity) { Uri uri = Uri.parse(path); InputStream is = null; byte[] data = null; try { is = activity.getContentResolver().openInputStream(uri); data = readBytes(is); } catch (Exception e) { e.printStackTrace(); } return data; }

とObjective-C部

<事前> <コード> + (void)initializeJava { [super initializeJava]; // here your initialize code ... [KeyboardBridge registerInstanceMethod:@"dataFromUrl" selector:@selector(dataFromUrl:forActivity:) returnValue:[NSData className] arguments:[NSString className], [AndroidActivity className], nil]; } - (NSData *)dataFromUrl:(NSString *)path { return [self dataFromUrl:path forActivity:[AndroidActivity currentActivity]]; }
 

I've used Android SDK to resolve this problem. You can look how use java with apportable here.

This is my java code

static private byte[] readBytes(InputStream inputStream) throws IOException {     // this dynamically extends to take the bytes you read     ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();      // this is storage overwritten on each iteration with bytes     int bufferSize = 1048576;     byte[] buffer = new byte[bufferSize];      // we need to know how may bytes were read to write them to the byteBuffer     int len = 0;     while ((len = inputStream.read(buffer)) != -1) {         byteBuffer.write(buffer, 0, len);     }      // and then we can return your byte array.     return byteBuffer.toByteArray(); }  public byte[] dataFromUrl(String path, Activity activity) {     Uri uri = Uri.parse(path);      InputStream is = null;     byte[] data = null;      try {         is = activity.getContentResolver().openInputStream(uri);         data = readBytes(is);     } catch (Exception e) {         e.printStackTrace();     }      return data; } 

And Objective-C part

+ (void)initializeJava {     [super initializeJava];       // here your initialize code     ...      [KeyboardBridge registerInstanceMethod:@"dataFromUrl"                                   selector:@selector(dataFromUrl:forActivity:)                                returnValue:[NSData className]                                  arguments:[NSString className], [AndroidActivity className], nil];  }  - (NSData *)dataFromUrl:(NSString *)path {     return [self dataFromUrl:path forActivity:[AndroidActivity currentActivity]]; } 
</div
 
 

関連する質問

0  どのくらいのスペースが適用可能になっています  ( How much space does apportable take ) 
私は49.9 MBのアプリを持っています。私はそれを展望可能に変換するつもりです。 Google Playの場合は50MB未満の場合は... だからアプリはApportable Conversion ... の最大サイズは何ですか... もう一つのスペー...

1  展開可能な変換確認VerDeactivity Error  ( Apportable conversion verdeactivity error ) 
こんにちは、そして事前にありがとう、 申し立て可能で、私は私のiOSアプリを移植しようとしています。私はエラーなしでアプリをビルドすることができますが、デバイスやエミュラティオで "ロード"(Apportable Load)または "Debug"(Apport...

4  ココポッド効率の良い回避策で展望可能です  ( Apportable with cocoapods efficient workaround ) 
スタックオーバーフロー質問に前述したように質問:はapportable(apportable.com)のサポートCocoApods Apportable で現在サポートされているCOCOAPOD は1つだけサポートされています。 <a href="htt...

0  プレイストアのアプリを作るために展望可能な使い方  ( Using apportable to make an app for the play store ) 
私のアプリが展望できないようにすることにとても近いようですが、私は何かが足りない必要があります。私はそれを私のAndroidデバイスにコンパイルして読み込むことができますが、私はプレイストアにアップロードできるバージョンを取得する方法を理解することはできません...

0  apportable-is-fno-objc-arcがサポートされています  ( Apportable is fno objc arc supported ) 
私はアークをサポートしていない私のプロジェクトにいくつかのファイルを持っています。 iOSのコンパイルは意図されているとおりに機能し、Apportableを使用してコンパイルすると、エラーがいくつかスローされます(ARCはリリースのための明示的な呼び出し)。フ...

1  apportableコマンドに2 / pオプションを指定する方法  ( How to supply 2 p options to apportable command ) 
現在、 apportable コマンドを実行すると、 2 p p p と入力する必要があります。私はすべての生成されたファイルを頻繁に消去してクリーンビルドを実行するので これらの値を自動的に供給する方法はありますか? ...

3  keyError: 'project' apportable loadコマンドを実行しようとすると  ( Getting keyerror project when try to run apportable load command ) 
ターミナルのApportable Loadコマンドを使用して、私の到来の客観的なCプロジェクトをロードしようとしています。しかし、私はkeyError: 'project'が起動しています。誰かが提案してください。 例えば target_arch_abiを使用...

0  COCOS2D-Xで展開できます  ( Using apportable with cocos2d x ) 
Apportableを使用してCocos2D-Xプロジェクトの移植の詳細は誰でもありますか? Cocos2D-iPhoneプロジェクトを移植するのと同じくらい簡単ではないようです。 Androidフラグが設定されていてもCC_PLATFORM_IOSとしてC...

2  RestkitとApportable - エラー:タイプが期待されています  ( Restkit and apportable error expected a type ) 
私はAppPortableで私のアプリをWOKENINGと警告しようとしているだけで、コンパイル中にRestkitから次のエラーが発生し続けています。 <事前> <コード> /Pods/Headers/RestKit/RestKit/CoreData/RKMa...

2  画面サイズとハードウェアメニュー(Apportable SDK)  ( Screen size and hardware menu apportable sdk ) 
ハードウェアボタンがない装置の画面サイズの検出に関する問題があります。 例えば縦加工画面サイズ800x1232ではなく、1280x752。 私のアプリのボタンでは、境界線に位置し、画面の正確なサイズが必要です。 WillRotateTointerFaceOr...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有