Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
384 views
in Technique[技术] by (71.8m points)

android - getInstallerPackageName returns null

In my Android app I wanted to check the source of app installation. I looked at the Android documentation and found the following API as part of the PackageManager class:

abstract String getInstallerPackageName(String packageName) 

Retrieve the package name of the application that installed a package.

Then I used the following code in the onCreate method of 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();
    }
}

But it looks like this API returns null on a real device.

Please let me know if we have any other means of getting the source of app installation.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

if you want to test this the way is to store the apk on the device by using the

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

then go to the adb shell by typing in 'adb shell' and hitting enter in the terminal then install using the following command

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

when installing the app in above method the call to getInstallerPackageName() returns the installer name you gave in the above command


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...