Get Info About an Android App - android

Is there a way to get info on an Android application (e.g., publisher name) if you know the name of the package? I don't see it in packageinfo or applicationinfo.

If what you want is not in PackageInfo or ApplicationInfo, then it is not accessible via PackageManager. For example, "publisher name" is only something that a marketplace like the Play Store knows -- that is not a piece of metadata that a developer needs to put into the APK.

Is there a way to get info on an Android application (e.g., publisher name) if you know the name of the package?
Checkout
1) get application name from package name
2) Find package name for Android apps to use Intent to launch Market app from web questions.
You may get some details using PackageManager and ApplicationInfo. The first one seems to answer that. Hope this is of some use to you.

Whilst the original question turned out to be about how to get the Play Store information for an application, there is often information to be discovered about the app publisher or developer (not always the same thing) by looking at the apk on the device.
For example, the package name is in a reversed domain name form, such as com.google.android.apps.maps, and thus gives you a pretty big clue that this is a Google published application.
Apks also contain certificate(s) which are available via packageInfo.signatures. These signatures are "unregulated" (they are generally self signed) and thus can contain anything so should not be trusted to be truthful, but in practice often give a good indication as to the developer (even to the extent of many of them containing the personal name of the lead programmer of the app!)
You can use an app such as App Detective to see the signatures contained in your device's installed apps.

Related

Is the name of the app subjected to legal terms or only the company's name?

I was at first wondering if the name of the application should be unique on the app stores and then I ran across an answer that says that it is no longer the case on.
I am confused to how true is this? Does this mean that the company's domain in the store should be unique and I am free to call my app whatever I want even if the name is already there on the store but of different functionality?
Thank you!
As for playstore you need a unique domain name to separate your app from other apps with same name. The leagal term is another thing. If for example try to use a copyright name for your app (ex. Coca-Cola) you ll not have problems with Google play, but with Coca Cola.
So, you can name your app whatever you want if you have a unique domain name to be uploaded in Google Play.
To be leagal you need a name that dont break copyright laws.

Accessing future Google-Play URL for app before pubhlishing

I am developing an application in which the user has the opportunity to share some data to facebook.
In this data that will be shared, a link to the application is provided.
However, the application is obviously not yet published yet. So I have had to "guess" what the URL will be. I have set it in this format:
https://play.google.com/store/apps/details?id=com.mycompanyname.appname ,
where mycompanyname is my name, and appname is my application name (i.e. using my real bundle id, or packet name). This is is the suggested way according to the answer to this question.
Now, my question is simply if there is this a proper way of doing this without assuming the link will always be the same? I do not want to risk publishing an app with a link that doesn't lead anywhere. Can I instead add some kind of placeholder that will automatically change to the actual play store URL?
Google play link always contains your package name after [id=]
https://play.google.com/store/apps/details?id=yourpackagename
Because on google play package name is unique for the same app, you can't find two apps with the same package name.
So it's ok to publish your app like you said, also if there anything wrong for any reason you can always update your published APK without any problem.
So you can for sure publish your app with it's link without no problem.

Publish updated/new apk with new keystore

So I have learnt my lesson in backing up my keystore and the new one is now safely tucked away from now on. { and yes I have looked for the old one for ages :-( }
I need to un-publish my current app and so I can reuse the app name and create a new app version 1 with the new keystore I have created.
I can only un-publish my app and not delete it as Google need to keep it as unpublished for legal reasons etc etc so understand that.
How do I create a new app with the same name as right now play store says that the name is already in use.
Still digging and investigating a solution but any help would be appreciated.
So after talking with Google support I really wanted to get the correct solution that only changed what needed to be changed and leave what could be left alone.
So for all the folk out there like me who lost their keystore file, here is the necessary steps for republishing your app where you have lost your keystore.
Unplubish your app.
So under ALL APPLICATIONS you see this and the app shows as Unpublished under Status.
Change the name of your unpublished app.
Here i just added the word old to the app name.
Rebuild your app with a new package name as follows:
if the current package name is com.mycom.myapp then use a new one such as com.mynewapp.myapp
Make a new keystore and when they say to KEEP IT SAFE they really do mean it, KEEP IT SAFE.
( I am still in the process of republishing the app so I will update my answer with more info once published.)
Google Play allows many apps to have the same title. However, the application package for each app needs to be unique within Google Play. This is the package attribute value that you provide for the <manifest> tag in the AndroidManifest.xml file of your project. The package name serves as a unique identifier for the application.
For example:
com.yourwebsite.yourappname or com.yourwebsite.yoursuitename.yourappname.
Here's the link for Android manifest :http://developer.android.com/guide/topics/manifest/manifest-element.html#package
How do I create a new app with the same name as right now play store
says that the name is already in use.
You cannot use the same name or package name. An app once published cannot be deleted and the package name is forbidden going forward once published to avoid re-publishing of banned/forbidden apps.
Same name can be used by a different developer but not by the same developer who already has an app with that name. (This is my understanding from a time when i entered the same name by mistake)
You will need to use a different package name and app name. But, if it was banned there is a high probability that it will survive with the new package name for long. It will get banned again and probably also lead to banning of the developer account. Be careful.

Is it possible to get UserId and password of installed application?

Is it possible/ permissible in Android SDK to get UserId and password of installed application (if it has a login)? I need installed application info like Application name, package name, installed date and was wondering if getting login name and password is feasible and allowed by Android.
This question helps to get the required username but this is application-specific. What I want is a generalised solution like if the installed application has a login (username and password) for example Facebook or Gmail or twitter, only then it should return the values.
The same I want to use in iPhone application. Please suggest your perspective on iOS too. I want to clearly mention that I am not sure if this is allowed in Android and iOS.
Also, can AccountManager help me in Android?
Usernames and passwords
iOS
It is somewhat unclear, but I assume that you are talking about getting OTHER installed apps' login information since I don't see why you would need a generalized way of getting your own app's information.
As for the iOS part, this is not doable. Most apps stores passwords in the keychain (like Apple suggests), and there is no way to share a keychain access group with other apps (except if the apps share the same Bundle seed ID, but that is not the case here). The Apple Keychain Services Concepts clearly states that
The iOS gives an application access to only its own keychain items.
The keychain access controls discussed in this section do not apply to
iOS.
Android
I strongly doubt there is a way on Android, but I will leave that for a more experienced Android developer to answer.
EDIT: Since you have not received any other answers I will go ahead and say what I think regarding the Android part as well. Generally speaking, Android does not provide a way of storing credentials the same way as iOS does it. Instead, there are multiple ways of doing it. On their Security Tips site, they state that where possible, username and password should not be stored on the device. Gmail, for example, does not (perhaps unreliable source). If you do store them on there, it also says that
By default, files that you create on internal storage are accessible
only to your app.
App detection
When it comes to detecting apps there are two ways to go about it (this is for iOS):
Checking if a specific URL scheme is supported by the device (and thus the app is installed). This can be done with canOpenUrl:
Comparing the device's currently running processes to known app executable names. This is done with sysctl(). This is a neat way of doing it: UIDevice Category For Processes
For Android, check out this example: How to Get List of Installed Apps in Android.
Conclusion
By design, there is no way to get usernames and passwords in either iOS or Android. There are ways of getting a list of most apps installed on an iPhone. This should also be possible on Android, I provided a link that describes one way of doing it.
You may want to consider OAuth as the vehicle to ultimately accomplish what you are trying to do. All three examples you mention support this:
https://developers.facebook.com/docs/reference/dialogs/oauth/
https://dev.twitter.com/docs/auth/oauth/faq
https://developers.google.com/accounts/docs/OAuth2
Technically speaking, in Android, you cannot find the credentials used for an application until they are stored in some shared location (which leaves a big security hole, so is not done!).
You can find Information like, package name, application name, installation time etc.. using PackageManager. Please refer below code snippet.
PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm
.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
// returns the package name
packageInfo.packageName;
// returns the application name
pm.getApplicationLabel(packageInfo).toString();
// returns the last installation time
pm.getPackageInfo(packageInfo.packageName, 0).firstInstallTime;
}

Is it possible to change the package name of an Android app on Google Play?

I would like to know whether it is technically possible, not whether it is easy or not, to change the actual package name of an Android app that is on Google Play. What I mean by package name is the name that will show up in the URL. Please, can anyone tell me why this is / is not possible?
Thanks!
From Dianne Hackborn:
Things That Cannot Change:
The most obvious and visible of these is the “manifest package name,” the unique name you give to your application in its AndroidManifest.xml. The name uses a Java-language-style naming convention, with Internet domain ownership helping to avoid name collisions. For example, since Google owns the domain “google.com”, the manifest package names of all of our applications should start with “com.google.” It’s important for developers to follow this convention in order to avoid conflicts with other developers.
Once you publish your application under its manifest package name, this is the unique identity of the application forever more. Switching to a different name results in an entirely new application, one that can’t be installed as an update to the existing application.
More on things you cannot change here
Regarding your question on the URL from Google Play, the package defined there is linked to the app's fully qualified package you have in your AndroidManifest.xml file. More on Google Play's link formats here.
Nope, you cannot just change it, you would have to upload a new package as a new app. Have a look at the Google's app Talk, its name was changed to Hangouts, but the package name is still com.google.android.talk. Because it is not doable :) Cheers.
As far as I can tell what you could do is "retire" your previous app and redirect all users to your new app. This procedure is not supported by Google (tsk... tsk...), but it could be implemented in four steps:
Change the current application to show a message to the users about the upgrade and redirect them to the new app listing.
Probably a full screen message would do with some friendly text. This message could be triggered remotely ideally, but a cut-off date can be used too. (But then that will be a hard deadline for you, so be careful... ;))
Release the modified old app as an upgrade, maybe with some feature upgrades/bug fixes too, to "sweeten the deal" to the users. Still there is no guarantee that all users will upgrade, but probably the majority will do.
Prepare your new app with the updated package name and upload it to the store, then trigger the message in the old app (or just wait until it expires, if that was your choice).
Unpublish the old app in Play Store to avoid any new installs. Unpublishing an app doesn't mean the users who already installed it won't have access to it anymore, but at least the potential new users won't find it on the market.
Not ideal and can be annoying to the users, sometimes even impossible to implement due to the status/possibilities of the app. But since Google left us no choice this is the only way to migrate the users of the old apps to a "new" one (even if it is not really new).
Not to mention that if you don't have access to the sources and code signing details for the old app then all you could do is hoping that he users will notice the new app...
If anybody figured out a better way by all means: please do tell.
No, you cannot change package name unless you're okay with publishing it as a new app in Play Store:
Once you publish your application under its manifest package name, this is the unique identity of the application forever more. Switching to a different name results in an entirely new application, one that can’t be installed as an update to the existing application.
Android manual confirms it as well here:
Caution: Once you publish your application, you cannot change the package name. The package name defines your application's identity, so if you change it, then it is considered to be a different application and users of the previous version cannot update to the new version.
If you're okay with publishing new version of your app as a completely new entity, you can do it of course - just remove old app from Play Store (if you want) and publish new one, with different package name.
If you are referring to com.example.app, no I understand you can't it would be considered a new app
Never, you can't do it since package name is the unique name Identifier for your app.....
Complete guide :
https://developer.android.com/studio/build/application-id.html
As per Android official Blogs :
https://android-developers.googleblog.com/2011/06/things-that-cannot-change.html
We can say that:
If the manifest package name has changed, the new application will be
installed alongside the old application, so they both co-exist on the
user’s device at the same time.
If the signing certificate changes, trying to install the new
application on to the device will fail until the old version is
uninstalled.
As per Google App Update check list :
https://support.google.com/googleplay/android-developer/answer/113476?hl=en
Update your apps
Prepare your APK
When you're ready to make changes to your APK, make sure to update your app’s version code as well so that existing users will receive your update.
Use the following checklist to make sure your new APK is ready to update your existing users:
The package name of the updated APK needs to be the same as the current version.
The version code needs to be greater than that current version. Learn more about versioning your applications.
The updated APK needs to be signed with the same signature as the current version.
To verify that your APK is using the same certification as the previous version, you can run the following command on both APKs and compare the results:
$ jarsigner -verify -verbose -certs my_application.apk
If the results are identical, you’re using the same key and are ready to continue. If the results are different, you will need to re-sign the APK with the correct key.
Learn more about signing your applications
Upload your APK
Once your APK is ready, you can create a new release.

Categories

Resources