我有一個後臺服務,我應該午餐時立即開始。如果有新的數據可用,此後臺服務會每5秒鐘向服務器詢問一次有新數據,我會創建通知。當我點擊通知應用程序時,但我無法檢索我在創建通知時添加的意圖附加參數。Titanium Android通過通知檢索意圖演員
代碼如下: index.js
startService();
function startService(){
if(OS_ANDROID){
log("START SERVICE");
var intent = Titanium.Android.createServiceIntent({
url: 'service.js'
});
Titanium.Android.startService(intent);
}
}
//===========================================
// I tried to add this code so that I could get the intent but it does not work
if(OS_ANDROID){
log("==========================" + JSON.stringify(Ti.Android.currentActivity));
// prints : {"bubbleParent":true,"actionBar":{"navigationMode":0,"bubbleParent":true,"title":null,"apiName":"Ti.Android.ActionBar"},"apiName":"Ti.Android.Activity"}
var _intent = Ti.Android.currentActivity.getIntent();
log(JSON.stringify(_intent));
//prints {"bubbleParent":true,"action":null,"type":null,"data":null,"flags":268435456,"apiName":"Ti.Android.Intent"}
if (_intent.hasExtra('ntfId')) {
log("========= INTENT HAS EXTRA =========");
}else{
log("========= NO INTENT HAS EXTRA =========");
}
var currActivity = Titanium.Android.currentActivity;
var passedInText = currActivity.getIntent().getStringExtra(Ti.Android.EXTRA_TEXT);
log(passedInText);
//prints null
}
service.js
function createNotification(data){
log(data.id + " <<<<<<>>>>>> " + data.type);
var activity = Ti.Android.currentActivity;
var intent = Ti.Android.createIntent({
className : 'packageName.AppNameActivity',
action: Ti.Android.ACTION_MAIN,
packageName: Ti.App.id,
flags: Ti.Android.FLAG_ACTIVITY_NEW_TASK | Ti.Android.FLAG_ACTIVITY_SINGLE_TOP
});
intent.addCategory(Titanium.Android.CATEGORY_LAUNCHER);
intent.putExtra("ntfId", data.id);
var pending = Ti.Android.createPendingIntent({
intent : intent
});
var notification = Ti.Android.createNotification({
contentIntent : pending,
contentTitle : data.title,
contentText : data.desription,
tickerText : "AppName",
icon : Ti.App.Android.R.drawable.appicon,
sound: 'default',
defaults: Titanium.Android.NotificationManager.DEFAULT_VIBRATE,
flags : Titanium.Android.ACTION_DEFAULT | Titanium.Android.FLAG_AUTO_CANCEL | Titanium.Android.FLAG_SHOW_LIGHTS
});
Ti.Android.NotificationManager.notify(data.notification_id, notification);
}
我想我的應用程序打開時得到 「ntfId」,這樣我就可以知道我點擊的通知和顯示正確的數據。
到目前爲止,我發現的通知是如何午餐的應用程序,並確實工作,但沒有明確的例子如何獲得通知細節。 我跟着這link和docs,但我使用合金模型。
如果它是有用的,我要添加TiApp.xml太:
<android xmlns:android="http://schemas.android.com/apk/res/android">
<manifest>
<uses-permission android:name="android.permission.VIBRATE"/>
<application android:debuggable="true">
<activity
android:configChanges="keyboardHidden|orientation"
android:name="org.appcelerator.titanium.TiActivity"
android:screenOrientation="portrait"/>
<activity
android:configChanges="keyboardHidden|orientation"
android:label="Appname"
android:launchMode="singleTask"
android:name=".AppnameActivity"
android:screenOrientation="portrait" android:theme="@style/Theme.Titanium">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
<services>
<service url="service.js"/>
</services>
</android>
我如何從通知的意圖通過了額外的參數?似乎當我做getCurrentActivity.getIntent()這是另一種意圖完全不同於我想要的。
你能告訴我一些事情或指向的地方,也許我錯過了看? 謝謝!
最後編輯 我被推gihub我的項目,TiAndroidNotification你可以克隆它,並嘗試,看看你能不能改變的東西。它不工作呢,我還在努力嘗試解決這個問題。 。 感謝您的任何幫助或反饋!
你可以請顯示你的最終代碼,如果你有它的工作。即使我被困在同樣的問題。應用程序打開,但我得到NULL值與getStringExtra函數 – Maverick
我仍然在這工作..我還沒有解決方案 – linnal