2013-06-09 4 views
1

나는이 급류 (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")); 

내가 어떤 앱이 작업을 수행 할 수 없다 "얻기 위해 설치된 앱의 몇 "대화 상자.

+0

Bittorrent가 휴대 전화에 있었습니까? – Cjames

+0

예, 존재합니다! addCategory 줄을 제거하면 선택기가 시작되고 토런트 앱이 표시되지만 브라우저 앱도 표시됩니다. 선택기에 토렌트 앱만 표시하고 싶습니다. – TheModularMind

답변

0

내 작업을 처리 할 수있는 모든 앱에 대한 의도를 얻은 다음 의도 패키지 이름 (일부 경우에는 패키지에 "토런트"단어가 포함되어 있는지 확인)을 기반으로 일부 필터를 수행합니다. 여기에 코드 :

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; 
} 
+0

이 답변으로 문제를 해결 했으므로 답변으로 표시하십시오. – Sufian

0

분명히 이러한 응용 프로그램은 해당 Intent 구조를 지원하지 않습니다. 예를 들어 어쩌면 그 URL에 어떤 구성표가 있는지 이해할 수없는 것입니다.

이러한 종류의 작업에 사용할 수있는 일종의 Intent이 있는지, 그리고 이미 뭔가 지원하지 않으면 추가 할 수 있는지 여부를 각각의 작성자와상의 해보십시오.