2016-01-21 229 views
0

如何從Android應用程序啓動其他Android應用程序,如果我有應用程序的軟件包名稱?如何從Android應用程序啓動其他Android應用程序?

例如:我在Android App中創建了Button。按下按鈕時,Skype將啓動。

  1. 是否可以在Android中執行上述操作?
  2. 當Button被點擊後,是否應該使用Intent來啓動其他應用程序?
  3. 它需要什麼權限?

在此先感謝。

+0

參考http://stackoverflow.com/questions/3872063/launch-an-application-from-another-application-on-android – sasikumar

+0

http://stackoverflow.com/questions/3872063/launch-an-application-從另一個應用程序在Android –

+0

在這個頁面的右上角,你會發現一個白色的輸入字段。你知道......這是用於搜索的目的, – nax83

回答

2

因爲它不是你的應用程序,正如你所說的,「Skype」。您可以在意圖中使用應用程序的包ID。

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address"); 
startActivity(launchIntent); 

對於Skype的,它成爲

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.skype.raider"); 
startActivity(launchIntent); 

在你的Java文件,說MainActivity.java

Button button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

    Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.skype.raider"); 
    startActivity(launchIntent); 
       } 
      }); 

而且在佈局文件,說activity_main.xml中

<Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Skype →" 
     android:id="@+id/button" 
     android:textColor="@color/white"/> 
1

您可以使用下面的代碼,推出的Skype或任何其他應用程序:

PackageManager packageManager = getPackageManager(); 
Intent intent = packageManager.getLaunchIntentForPackage("<skype_package_name>"); 
startActivity(intent); 
0

試試這個代碼:

PackageManager pm = context.getPackageManager(); 
try { 
    if (pm.getApplicationInfo("com.your.package.name", 0) == null) { 
     // no talk, no update 
     Toast.makeText(context, "packagenot found", Toast.LENGTH_SHORT).show(); 

    } else { 
     Intent packageIntent= pm.getLaunchIntentForPackage("com.your.package.name"); 

     packageIntent.addCategory(Intent.ACTION_SENDTO); 
     packageIntent.setType("text/plain"); 
     startActivity(packageIntent); 
    } 
} catch (PackageManager.NameNotFoundException e) { 

    // no talk, no update 
    Toast.makeText(context, "Package not found", Toast.LENGTH_SHORT).show(); 
} 
2

是如果你有其他的應用程序包名稱

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("other app package name"); 
startActivity(LaunchIntent); 
0
final String appPackageName = "com.example"; 
         final Intent openPlayStore = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)); 
         if (hasHandlerForIntent(openPlayStore)) 
          startActivity(openPlayStore); 
         else 
          startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName))); 

private boolean hasHandlerForIntent(Intent intent) { 
     return getActivity().getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).size() > 0; 
    } 
相關問題