2010-07-27 116 views
27

我想啓動一個特定的應用程序。 我知道如何做意向,但我想避免選擇菜單,如果有多個應用程序可以處理意圖,我想直接去一個特定的應用程序。希望這是有道理的。如何以編程方式在Android中啓動特定的應用程序?

+1

的[打開我們的應用程序的另一個一個應用?]可能重複(http://stackoverflow.com/questions/3342655/open-another-one-application-from-our-application) – Pentium10 2010-07-27 12:19:34

回答

23

您直接使用包名/類,例如創建一個新的意圖打電話給你使用twidroid程序如下link text

Intent intent = new Intent("com.twidroid.SendTweet"); 

你可能會想要把一個try /在應用程序未安裝時抓住ActivityNotFoundException。

+4

方法如果發生時,您可以拋出異常並在GooglePlay上打開應用程序。 ;) – 2014-02-25 13:40:41

8
Intent intent = new Intent();  
intent.setClassName("package.name", "package.name.LauncherActivityName"); 
startActivityForResult(intent,REQUEST_CODE); 
3

您所調用的活動不僅會出現在其自己的包中的Manifest中,而且還會出現在CALLING包的Manifest中。 - 別忘了!

44

您應該使用包管理器的功能。

Context ctx=this; // or you can replace **'this'** with your **ActivityName.this** 
try { 
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet"); 
ctx.startActivity(i); 
} catch (NameNotFoundException e) { 
    // TODO Auto-generated catch block 
} 
+1

什麼是ctx?對象或關鍵字? – Azahar 2014-01-28 07:27:08

+2

這是[Android上下文對象](http://developer.android.com/reference/android/content/Context.html),例如。一個Activity或getApplicationContext()的返回值。 – Carni 2014-02-02 12:14:00

+0

好的。謝謝carmi +1 – Azahar 2014-02-02 17:11:23

3

我用:

try { 
     Intent intent = new Intent();  
     intent.setClassName("package.name", "<your_package_name>"); 
     startActivity(intent); 
    } catch (NameNotFoundException e) { 
     Log.e(TAG, e.getMessage()); 
    } 

但像卡米認爲這將工作太:

try { 
    Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet"); 
    ctx.startActivity(i); 
} catch (NameNotFoundException e) { 
    Log.e(TAG, e.getMessage()); 
} 
1
在onCreate方法調用

=> openApp();

private void openApp() { 
    String packageName = "com.google.android.gm"; 
    if (isAppInstalled(activity, packageName)) 
     startActivity(getPackageManager().getLaunchIntentForPackage(packageName)); 
    else Toast.makeText(activity, "App not installed", Toast.LENGTH_SHORT).show(); 
} 

public static boolean isAppInstalled(Activity activity, String packageName) { 
    PackageManager pm = activity.getPackageManager(); 
    try { 
     pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); 
     return true; 
    } catch (PackageManager.NameNotFoundException e) { 
    } 
    return false; 
} 
+0

非常感謝gmail! – 2018-02-08 10:16:04

相關問題