Evernote の インテント まとめ

開発者に向けて公開されているEvernoteAPI情報はいろいろある。

Evernote API Overview
Emacs Evernote mode - Ruby
Mobile Integration Overview
Evernote Affiliate Program
Evernote Site Memory
Everboard - PHP
Note Export Format

インテントEvernote

Androidらしくインテントで公式アプリに渡していく方法もある。
サンプルコードの該当部分を抜粋して分かりやすくコンスタント埋め込みにして例外処理は省く。
暗黙的,明示的,いろいろなタイプで渡せる。

空の新しいノートを開く
Intent intent = new Intent();
intent.setAction("com.evernote.action.CREATE_NEW_NOTE");
startActivity(intent);
タイトルやメモ付きで新しいノートを開く
Intent intent = new Intent();
//intent.setComponent(new ComponentName("com.evernote","com.evernote.ui.NewNoteActivity"));
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "This is a sample text file");
intent.putExtra(Intent.EXTRA_TITLE, "New Note with Content");
startActivity(Intent.createChooser(intent, getString(R.string.label_share_using)));
ノート検索結果を表示
Intent intent = new Intent();
intent.setAction("com.evernote.action.SEARCH_NOTES");
intent.putExtra(SearchManager.QUERY, "tag:test");
startActivity(intent);
特定のノートを表示
Intent intent = new Intent();
intent.setAction("com.evernote.action.VIEW_NOTE");
intent.putExtra("NOTE_GUID", "63781676-3c3d-4e56-9999999");
intent.putExtra("FULL_SCREEN", true);
startActivity(intent);
画像選択からの新規ノート表示
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType(mimeType);
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, getString(R.string.label_share_using)));
ギャラリー系起動からの画像選択表示
Intent intent = new Intent(Intent.ACTION_PICK, 
                           MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, SELECT_IMAGE);
ギャラリー系起動からの画像選択受け取り
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == SELECT_IMAGE)
      // Callback from our 'startSelectImage' action
      if (resultCode == Activity.RESULT_OK) {
        endSelectImage(data);
      } 
}
ギャラリー系起動からの画像選択受け取後のEvernoteへの送信
private void endSelectImage(Intent data) { 
    Uri selectedImage = data.getData();
    String[] queryColumns = { MediaStore.Images.Media.DATA, 
                              MediaStore.Images.Media.MIME_TYPE};
    Cursor cursor = getContentResolver().query(selectedImage, queryColumns, null, null, null);
    cursor.moveToFirst();
    
    String filePath = cursor.getString(cursor.getColumnIndex(queryColumns[0]));
    String mimeType = cursor.getString(cursor.getColumnIndex(queryColumns[1]));
    cursor.close();

    // Now send the image to Evernote for Android
    shareImage(Uri.fromFile(new File(filePath)), mimeType);
}