# [TITANIUM]的Intent與Notification

- URL: https://justfly.idv.tw/titanium%e7%9a%84intent%e8%88%87notification/
- 日期: 2013-01-22
- 分類: WEB&amp;RIA
- 標籤: android, error, Titanium

原本想要實現的事情很簡單，就是收到asp server端的push後，app自己做一個Intent放進Notification後丟出去，然後使用者按下Notification的通知後，在app的webView中打開預先存在Intent中的網址。

事前[GCM跟asp的準備](https://justfly.idv.tw/2013/01/16/Just_1538.html)當然要先搞定。然後開始準備來存取Intent物件。

第一個先嘗試用putExtra:

```
Ti.Android.currentActivity.addEventListener('resumed',function(e){
 var intent = Titanium.Android.currentActivity.getIntent();
 var _url = intent.getStringExtra("gotoURL");
//$.webview.url = _url;
});
var intent = Ti.Android.createIntent({
 action : Ti.Android.ACTION_MAIN,
 className : 'tw.idv.Justflyctivity',
 flags : Ti.Android.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Ti.Android.FLAG_ACTIVITY_SINGLE_TOP
});
intent.putExtra("gotoURL","https://justfly.idv.tw");
intent.addCategory(Ti.Android.CATEGORY_LAUNCHER);			    

var pending = Ti.Android.createPendingIntent({
 intent : intent,
 type : Ti.Android.PENDING_INTENT_FOR_ACTIVITY,
 flags : Ti.Android.FLAG_ACTIVITY_NO_HISTORY
});
				
var notification = Titanium.Android.createNotification({
 icon: Ti.App.Android.R.drawable.notification_icon,
 contentIntent : pending,
 contentTitle : e.data.title,
 contentText : _message[0],
 tickerText: _message[0],
 flags:Titanium.Android.ACTION_DEFAULT | Titanium.Android.FLAG_AUTO_CANCEL | Titanium.Android.FLAG_SHOW_LIGHTS
});
				
Titanium.Android.NotificationManager.notify(1, notification);
```

然後發現不管再怎麼試，_url都沒有東西。

然後改用scheme的方式（就是讓其他的app也可以透過像是「Justfly://」的方式打開自己的app）：

首先設定tiapp.xml:

```

```

然後在index.js加入：

```
Ti.Android.currentActivity.addEventListener('resumed',function(e){
 var intent = Titanium.Android.currentActivity.getIntent();
 alert('getData='+intent.getData());
});
var intent = Ti.Android.createIntent({
 action: Ti.Android.ACTION_VIEW,
 data : "Justfly://tw.idv.justfly?url="+gotoURL
});

var pending = Ti.Android.createPendingIntent({
 intent : intent,
 type : Ti.Android.PENDING_INTENT_FOR_ACTIVITY,
 flags : Ti.Android.FLAG_ACTIVITY_NO_HISTORY
});
				
var notification = Titanium.Android.createNotification({
 icon: Ti.App.Android.R.drawable.notification_icon,
 contentIntent : pending,
 contentTitle : e.data.title,
 contentText : _message[0],
 tickerText: _message[0],
 flags:Titanium.Android.ACTION_DEFAULT | Titanium.Android.FLAG_AUTO_CANCEL | Titanium.Android.FLAG_SHOW_LIGHTS
});
				
Titanium.Android.NotificationManager.notify(1, notification);
```

只可惜getData永遠都是null的狀態…….

後來才在[這裡](https://jira.appcelerator.org/browse/TIMOB-7249?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel)發現，titanium的intent好像在android中是少了一大塊， getData(), getAction(), getType()都完全擷取不到…..所以目前只能宣告放棄，讓app按下Notification後打開app本身而已。
