2012-06-19 178 views
65

我正在尋找某種方式來啓動Twitter應用程序,並從我的應用程序中打開指定頁面,無需webview。 我在這裏找到了Facebook的解決方案: Opening facebook app on specified profile page從其他應用程序在Twitter應用程序中打開頁面 - Android

我需要類似的東西。

編輯 我只是找到了一個解決方案:

try { 
    Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("twitter://user?screen_name=[user_name]")); 
    startActivity(intent); 
} catch (Exception e) { 
    startActivity(new Intent(Intent.ACTION_VIEW, 
    Uri.parse("https://twitter.com/#!/[user_name]"))); 
} 
+3

謝謝你讓Twitter的用戶ID!我會在這裏提供更具體的例外情況:ActivityNotFoundException –

+0

並且「twitter:// status?user_id = [USER_ID]&status_id = [STATUS_ID]」是可能的 – ChangUZ

+0

@jbc當我們點擊按下時,有任何回撥。 – NagarjunaReddy

回答

39

這爲我工作:twitter://user?user_id=id_num

要知道ID:http://www.idfromuser.com/

+0

如何以編程方式使用http://www.idfromuser.com? –

+0

您使用http://www.idfromuser.com/找到你的Twitter頁面的ID。你不能用它編程! – arniotaki

+1

2016年就用: 'startActivity(新意圖(Intent.ACTION_VIEW,Uri.parse( 「https://twitter.com/PROFILENAME」)));' – Rick

1

剛剛嘗試這個代碼片斷。它會幫助你。

//Checking If the app is installed, according to the package name 
     Intent intent = new Intent(); 
     intent.setType("text/plain"); 
     intent.setAction(Intent.ACTION_SEND); 
     final PackageManager packageManager = getPackageManager(); 
     List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 

     for (ResolveInfo resolveInfo : list) 
     { 
      String packageName = resolveInfo.activityInfo.packageName; 

      //In case that the app is installed, lunch it. 
      if (packageName != null && packageName.equals("com.twitter.android")) 
      { 
       try 
       { 
        String formattedTwitterAddress = "twitter://user/" ; 
        Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); 
            long twitterId = <Here is the place for the twitter id> 
        browseTwitter.putExtra("user_id", twitterId); 
        startActivity(browseTwitter); 

        return; 
       } 
       catch (Exception e) 
       { 

       } 
      } 
     } 

     //If it gets here it means that the twitter app is not installed. Therefor, lunch the browser. 
     try 
     { 
          String twitterName = <Put the twitter name here> 
      String formattedTwitterAddress = "http://twitter.com/" + twitterName; 
      Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); 
      startActivity(browseTwitter); 
     } 
     catch (Exception e) 
     { 

     } 
+0

請,請描述如何更明確地獲取「twitter ID」 –

39

基於fg.radigales回答,這是我用,如果可能的啓動應用程序,但回落到瀏覽器,否則:

Intent intent = null; 
try { 
    // get the Twitter app if possible 
    this.getPackageManager().getPackageInfo("com.twitter.android", 0); 
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USERID")); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
} catch (Exception e) { 
    // no Twitter app, revert to browser 
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME")); 
} 
this.startActivity(intent); 

UPDATE

添加intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);可解決Twitter在我的應用程序內部而不是作爲新活動打開的問題。

+0

+ 1.it作品。謝謝。 –

+0

給出錯誤不能讓用戶在這個時候嘰嘰喳喳的Android – Rahul

+0

如何獲得USERID? – NarendraJi

3

我的答案建立在fg.radigales和Harry廣泛接受的答案之上。 如果用戶安裝了Twitter,但已禁用(例如,通過使用App Quarantine),則此方法不起作用。 Twitter應用程序的意圖將被選中,但無法處理它,因爲它被禁用。

相反的:

getPackageManager().getPackageInfo("com.twitter.android", 0); 
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036")); 

您可以使用以下方法來決定做什麼:採用Android的Twitter應用

PackageInfo info = getPackageManager().getPackageInfo("com.twitter.android", 0); 
if(info.applicationInfo.enabled) 
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036")); 
else 
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/wrkoutapp")); 
1

打開頁面,從其他應用程序在兩個步驟:

1.只需粘貼下面的代碼(在按鈕點擊或任何你需要的地方)

Intent intent = null; 
try{ 
    // Get Twitter app 
    this.getPackageManager().getPackageInfo("com.twitter.android", 0); 
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID")); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
} catch() { 
    // If no Twitter app found, open on browser 
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/USERNAME")); 
} 

2. intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID"));

要獲得USER_ID只寫用戶名http://gettwitterid.com/,並在那裏

希望這將有助於:)

相關問題