2

App1としての特定のアプリケーションが自分のアプリにインストールされているかどうかを知りたい。
ここでは、そのApp1の実際のパッケージ名はわかりません(App1は名前のみです)。
次に、そのアプリケーションが現在インストールされているかどうかを確認するにはどうすればよいですか?
私はこれを試しました、

private static final String PACKAGE_NAME = "App1";

/**
 * Returns true if "App1" is installed. 
 */
public static boolean isApp1Installed( Context context )
{
    boolean output = false;
    PackageManager pm = context.getPackageManager();
    try { 
        PackageInfo pi = pm.getPackageInfo( PACKAGE_NAME, 0 );
        if( pi != null )
        {
            output = true;
        }
    } catch (PackageManager.NameNotFoundException e) {}
    return output;
}

私を助けてください..

4

3 に答える 3

3

PackageManagerを使用して、以下を使用して、インストールされているすべてのパッケージのリストを取得できます。

getInsatlledPackages

またはによる活動のリスト

queryIntentActivities 

の意図のために CATEGORY_LAUNCHER

名前で、アプリがインストールされているかどうかを確認できます。

String appname = packageManager.getApplicationLabel(pk).toString();

さらにヘルプが必要な場合は、以下のリンクをたどることもできます。

http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon

それがあなたの問題を解決することを願っています。

于 2012-08-12T05:52:22.327 に答える
2

Qwertyは正しいので、彼/彼女の答えを受け入れる必要がありますが、このメソッドが期待どおりに機能しない場合があることを付け加えておきます。市場に出回っているアプリをチェックしている場合は、問題はないはずです。デフォルトのAndroidシステムアプリの1つをチェックしている場合は、(私が行ったように)問題が発生する可能性があります。一部のメーカーは、ストックメッセージングアプリなどを置き換えています。通常、パッケージが存在するかどうかを確認することで、これを見つけることができます。ただし、あるメーカーは、ストックメッセージングアプリを新しいパッケージ名で置き換え、古いパッケージをアクティビティなしのままにすることを決定しました。私がそれを回避する方法は、PackageInfo.activitiesのサイズをチェックすることでした。空の場合は、アプリがないかのように続行します。

于 2012-08-12T06:16:10.300 に答える
0

あなたはそれに意図があるかどうかをチェックすることができます:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.myapp");

if (launchIntent == null) {
    // it is not installed
}
于 2012-09-20T19:31:42.663 に答える