【问题标题】:PendingIntent not launching /data appsPendingIntent 未启动 /data 应用程序
【发布时间】:2013-03-17 11:43:24
【问题描述】:

我有一个 keyguard appwidget,我在其中启动了几个不同的 Intent。看来我可以启动 /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);

没有错误,意图只是解锁了键盘锁。 它也绝对不是 null,因为 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 将为我提供启动应用程序所需的一切,就像从主屏幕选择它时启动应用程序一样。

【问题讨论】:

    标签: android


    【解决方案1】:

    似乎我这样做的方式是做出一些假设。

    PendingIntent.getActivity 调用 startActivity(),这需要指定 CATEGORY_DEFAULT。

    以下代码可能“更正确”并且不太可能抛出无法找到 CATEGORY_DEFAULT 的错误:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      相关资源
      最近更新 更多