2015-10-04 73 views
1

我剛剛將一些社交網絡與我的應用程序相關聯,作爲初步測試,並使用相同類型的代碼,但我得到的結果與Facebook,Instagram和Twitter意圖不同。爲什麼「完成操作使用」彈出此意圖?

當我點擊Facebook或Twitter時,它會在安裝時自動打開應用程序,當它不是時使用瀏覽器。但是,Instagram的情況並非如此。彈出完整的動作使用對話框,這不是我想要發生的事情。

protected void LaunchInstagram() { 
    String InstagramUsername = "USERNAME"; 
    String LaunchInstagram = "http://instagram.com/_u/" + InstagramUsername; 
    String InstagramURL = "https://instagram.com/" + InstagramUsername; 
    try { 
     this.getPackageManager().getPackageInfo("com.instagram.android", 0); 
     Uri Uri = Uri.parse(LaunchInstagram); 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri)); 
    } catch (PackageManager.NameNotFoundException InstagramAppNotFoundOpenBrowser) { 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(InstagramURL))); 
    } 
} 

回答

2

您正在使用

字符串InstagramURL = 「https://instagram.com/」 + InstagramUsername;

因此,您將嘗試啓動的每個意圖將打開一個選擇器,因爲這是一個URL。

比每個支持URL的應用程序,如瀏覽器等,都會嘗試處理它。

編輯1:

試試這樣說:

public static boolean openApp(Context context, String packageName) { 
    PackageManager manager = context.getPackageManager(); 
    try { 
     Intent i = manager.getLaunchIntentForPackage(packageName); 
     if (i == null) { 
      return false; 
      //throw new PackageManager.NameNotFoundException(); 
     } 
     i.addCategory(Intent.CATEGORY_LAUNCHER); 
     context.startActivity(i); 
     return true; 
    } catch (PackageManager.NameNotFoundException e) { 
     return false; 
    } 
} 

我不知道這將幫助你在App你打開一個特定的用戶頁面。

編輯2:

試試這樣說:

 Uri uri = Uri.parse("http://instagram.com/_u/USERNAME"); 
    Intent insta = new Intent(Intent.ACTION_VIEW, uri); 

    insta.setPackage("com.instagram.android"); 
startActivity(insta); 
+0

我現在明白了,有沒有編輯LaunchInstagram字符串,所以如果直接安裝在try塊將重定向到Instagram的應用程序的方法嗎? –

+0

我會嘗試兩種方式,謝謝:) –

+0

NP。 upvote我的答案,如果你可以:) – Shahar

相關問題