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 件のコメント:
コメントを投稿