Androidが他のアプリを開く2つの方法
2963 ワード
実際の開発では、個別のアプリを開く必要があるかもしれませんが、Androidが自分のアプリケーションで他のアプリケーションを開く方法を紹介します.
方法1:パッケージ名とデフォルトで起動されたActivityを知っている場合は、次のように開くことができます.
例:
上記のコードは、comというパッケージを開きます.example.demo、デフォルト起動Activityはcom.example.demo.MainActivityのアプリ
この方法は簡単ですが、実際に開くアプリのパッケージ名はわかりませんし、開くアプリのデフォルト起動Activityもわかりません.次は別のアプリを開く方法を上演します.
方式2:アプリケーションパッケージ名も知らないし、デフォルト起動Activityも知らない場合、アプリを開く
(1)最初のステップは、開くAPPのパッケージ名を取得することであり、1つのAPPのパッケージ名は以下のコードで取得することができる
(2)ステップ2で取得したアプリ名から、対応するアプリのパッケージ名を見つけることができます.これで、一つのアプリのパッケージ名がわかります.次に、パッケージ名でアプリを開きます.
方式3:scheme構成によりactivityを起動し、コード構成は以下の通りである.
これで、APPパッケージ名とデフォルト起動Activityが分からないまま、APPを開くことができます.
方法1:パッケージ名とデフォルトで起動されたActivityを知っている場合は、次のように開くことができます.
Intent intent = new Intent();
ComponentName cn = new ComponentName("packageName", " activity");
intent.setComponent(cn);
startActivity(intent);
例:
Intent intent = new Intent();
ComponentName cn = new ComponentName("com.example.demo", "com.example.demo.MainActivity");
intent.setComponent(cn);
startActivity(intent);
上記のコードは、comというパッケージを開きます.example.demo、デフォルト起動Activityはcom.example.demo.MainActivityのアプリ
この方法は簡単ですが、実際に開くアプリのパッケージ名はわかりませんし、開くアプリのデフォルト起動Activityもわかりません.次は別のアプリを開く方法を上演します.
方式2:アプリケーションパッケージ名も知らないし、デフォルト起動Activityも知らない場合、アプリを開く
(1)最初のステップは、開くAPPのパッケージ名を取得することであり、1つのAPPのパッケージ名は以下のコードで取得することができる
private void getAppInfo(Context context) throws Exception{
PackageManager packageManager = context.getPackageManager();
// app
List installedPackages = packageManager.getInstalledPackages(0);
for(PackageInfo info : installedPackages){
String packageName = info.packageName;//app
ApplicationInfo ai = packageManager.getApplicationInfo(packageName, 0);
String appName = (String) packageManager.getApplicationLabel(ai);//
}
}
(2)ステップ2で取得したアプリ名から、対応するアプリのパッケージ名を見つけることができます.これで、一つのアプリのパッケージ名がわかります.次に、パッケージ名でアプリを開きます.
public static void openApp(Context context, String packageName) {
final Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
context.startActivity(intent);
}
方式3:scheme構成によりactivityを起動し、コード構成は以下の通りである.
public static void startActivity(Context context, String intentUrl){
final Intent intent = initIntent(intentUrl);
context.startActivity(intent);
}
private static Intent initIntent(final String uriString) {
final Intent intent = new Intent();
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(uriString));
return intent;
}
startActivity(context,"demo://demo_ac")
これで、APPパッケージ名とデフォルト起動Activityが分からないまま、APPを開くことができます.