2

我安装了几个应用程序来下载种子(Ttorrent、UTorrent 等),但是当我在我的应用程序中运行此代码时

    Intent i = new Intent(Intent.ACTION_VIEW);
    i.addCategory(Intent.CATEGORY_DEFAULT);
    i.setType("application/x-bittorrent");
    i.setData(Uri.parse(movie.getTorrentUrl()));
    startActivity(Intent.createChooser(i, "view"));

我得到“没有应用程序可以执行此操作”对话框。

4

2 回答 2

0

我解决了为每个可以处理我的操作的应用程序获取一个意图,然后我根据意图包名称执行一些过滤器(在我的情况下,我检查包是否包含“torrent”字样)。这里的代码:

  public Intent generateTorrentIntent(Context context, String action, Intent intent) {
    final PackageManager packageManager = context.getPackageManager();
    List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    if (resolveInfo.size() > 0) {
        List<Intent> targetedShareIntents = new ArrayList<Intent>();
        for (ResolveInfo r : resolveInfo) {
            Intent progIntent = (Intent)intent.clone();
            String packageName = r.activityInfo.packageName;

            progIntent.setPackage(packageName);
            if (r.activityInfo.packageName.contains("torrent"))
                targetedShareIntents.add(progIntent);

        }
        if (targetedShareIntents.size() > 0) {
            Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0),
                    "Select app to share");

            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
                    targetedShareIntents.toArray(new Parcelable[] {}));

            return chooserIntent;
        }
    }
    return null;
}
于 2013-06-10T15:02:09.060 回答
0

显然,这些应用程序不支持该特定Intent结构。例如,也许该 URL 中的任何方案都是他们不理解的方案。

您可以考虑与他们各自的作者交谈,询问他们是否有某种Intent可以用于这种操作的东西,以及如果他们还不支持某些东西,是否可以添加一个。

于 2013-06-10T00:10:31.423 回答