私は
(アンドロイドデータフォルダに存在)署名は(あなたの解除キーによって署名された)ストアバージョンとデバッグキーで署名されているスタジオ経営のバージョン間で同じではありませんので、あなたがこのエラーを取得していると思います
これはエラーに関するものですので、APKを店舗にアップロードする場合と同様に作成し、リリースキーストアで署名してから、デバイスにインストールしてください(adb install
を使用するか、adbをプッシュしてからインストールしてください)。モバイル、またはAPKをモバイルメモリにコピーして、モバイルからインストールするなど)おそらく?
第2部分については、アプリの更新後に第1回のapp/detect first runを検出すると、その答えによって通知されたSharedPreferences
を使用できます。これはアプリケーションのバージョンによってリンクされたり影響を受けたりしないため、十分ではなく、アップグレード後に最初に実行されたものを検出するために必要なものです。
マニフェストファイルandroid:versionCode
に指定するアプリケーションのバージョンコード(整数)を取得し、バージョンをPlayStoreにアップロードするたびに増やす必要があります。
このコードは行いますあなたが必要なもの
//this code gets current version-code (after upgrade it will show new versionCode)
PackageManager manager = this.getPackageManager();
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
int versionCode = info.versionCode;
SharedPreferences prefs = this.getSharedPreferences("yourAppName", Context.MODE_PRIVATE);
if(prefs.getInt("last_version_code", -1) > 0){
if(prefs.getInt("last_version_code", -1) != versionCode){
//save current versionCode: 1st-run after upgrade
prefs.edit().putInt("last_version_code", versionCode).commit();
//put show the dialog code here...
} //no need for else, because app version did not change...
}else{
//save current versionCode for 1st-run ever
prefs.edit().putInt("last_version_code", versionCode).commit();
}
prefs.getInt("last_version_code", -1)
はこれが最後のキーlast_version_code
の環境に値を保存してしまいます(あなたが上のダイアログを表示したいという活動/フラグメントでそれを使用することができます)値がない場合(1回目の実行時)はデフォルトで-1
を返します。
if
は、preferences> 0(最初に実行されたものではない)から返された値を確認します。 と、マニフェストの値と同じではありません。それは
あなたはちょうどあなたがあなたのようにそれを使用したい場合は、それが数(最後に保存されたバージョンコード)
を返します。その値を取得しようとversionCodeので、次回の書き込み==-1
の場合(UPGRADED)を意味します方法(複数の場所で呼ばれることもある) は、アプリが
public static boolean appWasUpdated(Context context){
//this code gets current version-code (after upgrade it will show new versionCode)
PackageManager manager = context.getPackageManager();
PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
int versionCode = info.versionCode;
SharedPreferences prefs = context.getSharedPreferences("yourAppName", Context.MODE_PRIVATE);
if(prefs.getInt("last_version_code", -1) > 0){
if(prefs.getInt("last_version_code", -1) != versionCode){
//save current versionCode: 1st-run after upgrade
prefs.edit().putInt("last_version_code", versionCode).commit();
return true;
} //no need for else, because app version did not change...
}else{
//save current versionCode for 1st-run ever
prefs.edit().putInt("last_version_code", versionCode).commit();
}
return false;
}
、ちょうど活動/フラグメントから
if(appWasUpdated(this)){
showMyDialog();
}
を、このメソッドを呼び出すに更新された場合はfalse/trueを返すためにメソッドを作成します