5

私の Android アプリでは、アプリのインストール元を確認したいと考えていました。Android のドキュメントを調べたところ、PackageManager クラスの一部として次の API が見つかりました。

abstract String getInstallerPackageName(String packageName) 

パッケージをインストールしたアプリケーションのパッケージ名を取得します。

次にonCreate、MyActivity のメソッドで次のコードを使用しました。

if(Build.VERSION.SDK_INT >= 11) 
{
    PackageManager myapp= this.getPackageManager(); 
    String installer = myapp.getInstallerPackageName("com.MyPackage");
    if(installer == null)
    {
        Toast.makeText(getApplicationContext(), MyActivity.this.getString(R.string.invalidsource), Toast.LENGTH_SHORT).show();
        MyActivity.this.finish();
    }
}

nullしかし、この API は実際のデバイスで返されるようです。

アプリのインストール元を取得する他の手段があれば教えてください。

4

3 に答える 3

9

これをテストする方法は、apk をデバイスに保存することです。

adb push 'test.apk' '/sdcard/Download'

次に、「adb shell」と入力してターミナルでEnterキーを押してadbシェルに移動し、次のコマンドを使用してインストールします

pm install -i 'installernameyouwant' /sdcard/Download/test.apk

上記のメソッドでアプリをインストールする場合、 getInstallerPackageName() の呼び出しは、上記のコマンドで指定したインストーラー名を返します

于 2014-09-11T06:31:23.183 に答える
5

あなたの質問に関して、アプリはどのようにデバイスにインストールされましたか? 「adb install」を介してnullになります。

以下を使用すると、テスト目的で必要なものにオーバーライドできるはずです。

pm install -i installername com.example.package

GooglePlay には com.google.android.feedback の値が必要です。他のアプリ ストアがどのような値を使用しているかはわかりません。

于 2012-10-08T14:31:26.707 に答える