You can do as you wish. You could even store the data into a database, and have your second Activity read it, if you want. 
But Android offers a intra-activity communication model which is standard for all applications. Why not use it?
So, Please tell me what is the better approach to send data between these activities.
You already know the answer for that.
You won't find a framework that advises to pass data between components via static variables.
As a personal note, I do not get why public static non-final fields are allowed in java.
EDIT
in my answer above I'm talking about dynamic data. If you are concerned with constants, then I don't see why you shouldn't use public static final fields.