Apparently I cannot comment without 50 reputation, so I will put this in its own answer.
The PackageManager method cited by others seems like a nice and simple way to go, but as hackbod mentions, having two installed applications is annoying (and a bit confusing) for the user.
However - and I haven't tried this, because I haven't published my app yet - it seems like you could keep a variable that starts as false and then updates to true if it finds the Pro version installed. The variable would not revert to false just because the Pro version is not there. Then, you could let the user know in both versions that they need to install Pro, then open up the Trial and click Unlock. Once this is done, the Trial version would become a Full version and inform you (if it found the Pro version installed) that you can now uninstall the Pro version and you will continue to have full access.
Something a bit like this:
String msg = "";
boolean sigMatch = isProInstalled(context);
if (unlocked)
{
// If you get here by clicking a button that goes away once the app is unlocked, then you may never see this. Still, better safe than sorry.
msg += "Thanks! You already have access to the full game.";
}
else
{
if (sigMatch)
{
unlocked = true;
saveData(); // I assume you already know how to store variables.
msg += "Unlock successful. You now have access to the full game."
}
else
{
msg += "You are using a Trial version of this game. (blah, blah). To unlock the full version, please purchase XYZ Pro. Install the application and then start this application again and go into this screen again. You should get a message letting you know that the app has been successfully unlocked, after which you may uninstall the Pro version. You do not have to keep it on your device after unlocking the game.";
}
}
if (sigMatch)
{
msg += " If you like, you may now uninstall the Pro application. You will continue to have full access to XYZ.";
}
Now, this cannot tell you whether the user paid for the Pro version and then returned it within 24 hours, as hackbod also mentioned is possible.** But it seems like this scenario might not happen very often. If someone paid and then returned it (especially if you are not charging very much), then they probably decided to stop using the app... or they are trying to steal it, in which case there are other ways to do it anyway. If this possibility concerns you, then In-App Billing may be your best choice. But if you are only looking for a simple measure by which to keep out the casual user, and you don't want to force them to keep two applications installed for all time, then this might be an option.
** I suppose you could keep a timestamp with another variable, and require the user to keep the Pro version installed until some number of hours after that timestamp, THEN allow them to uninstall...