Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:torrent意图_Android_Android Intent_Bittorrent - Fatal编程技术网

Android:torrent意图

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

我安装了几个应用程序来下载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"));

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

显然,这些应用程序不支持特定的
意图
结构。例如,可能那个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应用程序,因为您用此答案解决了问题,请将此标记为答案。