まだブログ飯とかいってんの?

もうすぐブログで食えなくなる前に。「脱ブログ飯」のすすめ。

Taskerを使った行動管理システムを作る#1

EvernoteリンクからTaskerのタスクを実行する方法を考えていたら、いつの間にか行動管理システムを作っていたわけですが。とりあえずEvernoteからTaskerのタスクを実行できればいいなぁ、となんとなく思っていて、いろいろ試行錯誤した結果をメモしておきます。


まず、TaskerのEvent>IntentReceivedで独自スキームを設定して実行できれば一番簡単に実現出来るとやってみたんですが、どうも上手くいかずに断念。マニュフェストファイルに定義されたIntentReceiverには対応していない・・・?


Event>IntentReceived


それで結局、「Tasker://」から始まるリンクをクリックした時のIntentを受信するアプリを自作。アプリ内でやっていることは、Intentの受信して、AutoShareにそのまま転送するだけです。









AndroidManifest.xmlのintent-filterの定義、ここでスキームをtaskerとしているので[tasker://]で始まるリンクのクリックを受信出来るようになる。



protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(com.example.test.IntentBridgeForTasker.R.layout.activity_main);

Intent intent = getIntent();
String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)){
android .net.Uri uri = intent.getData();

TextView textView1 = (TextView)findViewById(com.example.test.IntentBridgeForTasker.R.id.textView1);
textView1.setText(uri.toString());

try {
Intent share = new Intent();
share.setAction(Intent.ACTION_SEND);
share.setType("text/plane");
share.putExtra(Intent.EXTRA_TEXT, uri.toString());
startActivity(share);
} catch (Exception e) {
Log.d(TAG, "Error");
}
this.finish();
}

}

ACTION_SENDは共有画面を表示するIntent。そこからAutoShareを常時起動するように選択しておけば、そのままTaskerに転送される用になる。Taskerからは、Plugin>AutoShareから受信イベントを設定する。
MainActivity.java


以上の方法では、AutoShareを経由したけど、直接Taskerに送ってもいいような気がするなぁ。
まあ、特に問題なく動作しているのでいいけど。これでEvernoteからのリンククリックをTaskerから受信できる環境が出来たので、次回は送られてきたURLの処理について書く予定。