android:versionCode="1"
VersionCodeはGooglePlayに公開する際に使われます。
アプリの更新をする際には、1度公開したバージョンよりも
大きい数字を指定しないと更新できません。
また、この数字はユーザーには公開されません。
android:versionName="1.0"
VersionNameはGooglePlayや端末インストール後に
ユーザーが確認できるバージョンです。
アプリの更新時に必ず更新しないといけないわけではありません。
わりと自由に指定できます。
android:versionName="1.0.2"
とかもOKです。
VersionCodeはGoogle管理用
VersionNameは制作者管理用
という認識で問題ないかと思われます。
VersionNameは既にインストール済のユーザーに
最新版のアプリをインストールしてもらうために使えます。
バグが見つかった時とか。。
個人的にはサーバー側でアップデートさせるバージョンを管理して、
そのバージョンよりも、低かったら強制バージョンアップなアプリを作っています。
ではでは、
アプリのバージョン情報、最終更新日、最初にインストールした日付の取得してみましょう。
サンプル文はこんな感じです。
■サンプル
package com.example.Package; import android.os.Bundle; import android.app.Activity; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.graphics.Color; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //レイアウトの作成 LinearLayout oLayout = new LinearLayout(getApplicationContext()); //レイアウトにパーツを上から順に設置する設定 oLayout.setOrientation(LinearLayout.VERTICAL); //文字を見やすくするために背景を黒色に oLayout.setBackgroundColor(Color.BLACK); //レイアウトの設定 setContentView(oLayout); //レイアウトパラム定数(縦横の長さの定数)の格納 int WC = ViewGroup.LayoutParams.WRAP_CONTENT; int MP = ViewGroup.LayoutParams.MATCH_PARENT; //レイアウトの横幅・縦幅を設定 LayoutParams oLayPar = new LinearLayout.LayoutParams(MP, 40); try { //PackageInfoの取得 PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA); //パッケージのバージョンネームの取得 String versionName = packageInfo.versionName; //パッケージのバージョンコードの取得 int versionCode = packageInfo.versionCode; //最初にインストールした日付 long firstInstallTime = packageInfo.firstInstallTime; //最後にインストールした日付 long lastUpdateTime = packageInfo.lastUpdateTime; //他のアプリと共有する場合のLinuxID String sharedUserId = packageInfo.sharedUserId; //テキストビューを作成して、取得した情報を出力 oLayout.addView(make_TextView("versionName = " + versionName), oLayPar); oLayout.addView(make_TextView("versionCode = " + versionCode), oLayPar); oLayout.addView(make_TextView("firstInstallTime = " + firstInstallTime), oLayPar); oLayout.addView(make_TextView("lastUpdateTime = " + lastUpdateTime), oLayPar); oLayout.addView(make_TextView("sharedUserId = " + sharedUserId), oLayPar); } catch (NameNotFoundException e) { //TODO 自動生成された catch ブロック e.printStackTrace(); } } //テキストビューの作成 private TextView make_TextView(String sMessage){ //テキストビューの生成 TextView tv = new TextView(getApplicationContext()); //メッセージの設定 tv.setText(sMessage); return tv; } //テキストビューの作成(long型用) private TextView make_TextView(long sMessage){ return make_TextView(String.valueOf(sMessage)); } //テキストビューの作成(int型用) private TextView make_TextView(int sMessage){ return make_TextView(String.valueOf(sMessage)); } }実行結果
このような感じになりました。
manifest.xmlと見比べて、正しいかの判定をお願いいたします。
Time系がよくわからない数字となっていますが、
これはUTCの表示のため。こうなっております。
1970年の1月1日から、どれだけ時間が経過しているかで、
時刻を管理しています。
0 件のコメント:
コメントを投稿