Android:torrent意图
我安装了几个应用程序来下载torrents(Ttorrent、UTorrent等),但当我在应用程序中运行此代码时Android:torrent意图,android,android-intent,bittorrent,Android,Android Intent,Bittorrent,我安装了几个应用程序来下载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())); start
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"));
我得到了“没有应用程序可以执行此操作”对话框。显然,这些应用程序不支持特定的
意图
结构。例如,可能那个URL中的任何方案都是他们不理解的
你可以考虑和他们各自的作者交谈,询问他们是否有某种类型的<代码>意图/代码>,你可以使用这类操作,并且如果他们还没有支持一些东西,是否可以添加一个。p> 我解决了为每个能够处理我的操作的应用程序获取一个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;
}
public Intent generateTorrentinent(上下文、字符串操作、意图){
final-PackageManager-PackageManager=context.getPackageManager();
List resolveInfo=packageManager.QueryInputActivities(意图,
PackageManager.MATCH_(仅限默认值);
如果(resolveInfo.size()>0){
List targetedShareContents=new ArrayList();
用于(解析程序:解析信息){
Intent progent=(Intent)Intent.clone();
字符串packageName=r.activityInfo.packageName;
progent.setPackage(packageName);
if(r.activityInfo.packageName.contains(“torrent”))
targetedShareContents.add(progIntent);
}
如果(targetedShareContents.size()>0){
Intent chooserecontent=Intent.createChooser(targetedShareContents.remove(0),
“选择要共享的应用程序”);
选择content.putExtra(Intent.EXTRA\u初始意图,
目标共享内容toArray(新包裹[]{});
返回选择器内容;
}
}
返回null;
}
您的手机中是否存在Bittorrent?是的,它存在!如果我删除addCategory行,选择器将启动并显示torrent应用程序,但也会显示浏览器应用程序。我只想在Chooser中显示torrent应用程序,因为您用此答案解决了问题,请将此标记为答案。