0

いくつかの異なるインテントを起動するキーガード appwidget があります。/system アプリ (mms、設定など) を起動できるようです。/data アプリではありません (たとえば chrome )

次の 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() メソッドが次のことを示しているため、これは間違いなく null ではありません。

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 は、アプリをホーム画面から選択した場合と同じ方法で起動するために必要なすべてのものを提供してくれると思いました。

4

1 に答える 1

0

私がこれを行っていた方法は、いくつかの仮定を立てていたようです。

PendingIntent.getActivity は、CATEGORY_DEFAULT を指定する必要がある startActivity() を呼び出します。

次のコードはおそらく「より正確」であり、CATEGORY_DEFAULT が見つからないというエラーをスローする可能性が低くなります。

Intent i = new Intent();
i.setPackage(pkgName);
i.addCategory(Intent.CATEGORY_DEFAULT);
于 2013-04-01T04:55:02.370 に答える