2013-03-17 128 views
0

我有一個keyguard appwidget,我正在啓動一些不同的意圖。看來我可以啓動/系統應用程序(MMS,設置等)。但並非/數據應用(鉻例如)PendingIntent未啓動/數據應用程序

我有以下PendingIntentTemplate定義:

Intent startApplicationIntent = new Intent(); 
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, startApplicationIntent, 0); 
mainLayout.setPendingIntentTemplate(R.id.stackview, pendingIntent); 

在我RemoteViewsFactory,我有以下FillInIntent:

Intent i = pm.getLaunchIntentForPackage(pkgName); 
i.addCategory(Intent.CATEGORY_LAUNCHER);    
i.setAction(Intent.ACTION_MAIN); 
stackviewRemoteView.setOnClickFillInIntent(R.id.stackview_image, i); 

有沒有錯誤,意圖只是解鎖了鍵盤。 它也絕對不是空的toString()方法顯示如下:

Intent { act=android.intent.action.MAIN cat=  
[android.intent.category.LAUNCHER] flg=0x10000000  
pkg=com.android.chrome  
cmp=com.android.chrome/com.google.android.apps.chrome.Main } 

是不是有什麼特別的,我需要的非系統應用程序呢?我認爲getLaunchIntentForPackage會爲我提供啓動應用程序所需的所有功能,就像啓動主屏幕時啓動應用程序一樣。

回答

0

似乎我這樣做的方式是做出一些假設。

PendingIntent.getActivity調用startActivity(),它需要指定CATEGORY_DEFAULT。

下面的代碼可能是「更正確」,不太可能拋出CATEGORY_DEFAULT不能被發現的錯誤:

Intent i = new Intent(); 
i.setPackage(pkgName); 
i.addCategory(Intent.CATEGORY_DEFAULT);