我已经安装了几个应用程序来下载torrents (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"));我看到“没有应用程序可以执行此操作”对话框。
发布于 2013-06-10 23:02:09
我解决了为每个可以处理我的操作的应用程序获取intent的问题,然后我根据intent包名称执行一些过滤器(在我的例子中,我检查包是否包含"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-10 08:10:31
显然,这些应用程序不支持这种特定的Intent结构。例如,也许该URL中的任何方案都是他们不理解的。
您可以考虑与他们各自的作者交谈,询问他们是否有可以用于此类操作的某种Intent,以及如果他们还不支持某些东西,是否可以添加一个。
https://stackoverflow.com/questions/17015359
复制相似问题