2016-01-21 5 views
0

Как запустить другое приложение для Android из Android-приложения, если у меня есть имя пакета приложения?Как запустить другое приложение для Android из Android-приложения?

Например: Я создаю Button в приложении для Android. При нажатии кнопки запускается Skype.

  1. Возможно ли выполнить вышеуказанное действие в Android?
  2. Следует ли использовать 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- from-another-application-on-android –

+0

в правом верхнем углу этой страницы вы найдете белое поле ввода. Вы знаете ... это используется для поисковых целей, – nax83

ответ

2

Поскольку это не ваше приложение, как вы упомянули, «Skype». Вы можете использовать идентификатор пакета приложения в намерении.

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

Вы можете использовать следующий код для запуска скайп или любое другое приложение:

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; 
    } 
Смежные вопросы