1

アプリをデプロイしましたが、使用中です。毎月かそこらで更新して新機能を追加しています。更新されたアプリをユーザーが初めて使用するときにのみ、「新しい」画像を表示したいと思います。どうすれば一度だけ表示できますか?どこから始めればいいですか?

4

2 に答える 2

2

たぶん、このようなものがあなたの問題を解決するのに役立つかもしれません:

public class mActivity extends Activity {
  @Overrride
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      this.setContentView(R.id.layout);

      // Get current version of the app
      PackageInfo packageInfo = this.getPackageManager()
          .getPackageInfo(getPackageName(), 0);
      int version = packageInfo.versionCode;

      SharedPreferences sharedPreferences = this.getPreferences(MODE_PRIVATE);
      boolean shown = sharedPreferences.getBoolean("shown_" + version, false);

      ImageView imageView = (ImageView) this.findViewById(R.id.newFeature);
      if(!shown) {
          imageView.setVisibility(View.VISIBLE);

          // "New feature" has been shown, then store the value in preferences
          SharedPreferences.Editor editor = sharedPreferences.edit();
          editor.put("shown_" + version, true);
          editor.commit();
      } else
          imageView.setVisibility(View.GONE);
  }

次にアプリケーションを実行すると、画像は表示されません。

于 2012-04-09T17:41:24.393 に答える
0

イメージを保存するために使用できるサーバーがある場合は、そこに配置して、更新時にダウンロードします。

簡単な方法は、sharedpreferneceを使用して現在のアプリのバージョンを保持し、開いたときにそれに対してチェックを実行することです。保存されているバージョンとは異なるバージョンが返される場合は、イメージダウンローダーを実行し、必要な方法で表示します。:)

これが私のアプリの1つで使用している例で、ImageView宣言をoncreateに配置し、メソッドに独自のスポットを与えます。

もう1つ覚えておくべきことは、画像ホスティング機能を使用して、imgurのように、顧客向けに「アプリで更新された」画像をホストできることです。定期的に更新されるため、画像がまだ残っている間に画像が削除されることを心配する必要はありません。使用する(アプリを最新の状態に保つ場合)

    private final static String URL = "http://hookupcellular.com/wp-content/images/android-app-update.png";

    ImageView imageView = new ImageView(this);
    imageView.setImageBitmap(downloadImage(URL));


private Bitmap downloadImage(String IMG_URL)
{
    Bitmap bitmap = null;
    InputStream in = null;        
    try {
        in = OpenHttpConnection(IMG_URL);
        bitmap = BitmapFactory.decodeStream(in);
       in.close();
 } catch (IOException e1) {
   e1.printStackTrace();
 }
 return bitmap;                
 }

private static InputStream OpenHttpConnection(String urlString) throws IOException
{
    InputStream in = null;
    int response = -1;

    URL url = new URL(urlString); 
    URLConnection conn = url.openConnection();

    if (!(conn instanceof HttpURLConnection))                     
        throw new IOException("Not an HTTP connection");

    try
    {
        HttpURLConnection httpConn = (HttpURLConnection) conn;
        httpConn.setAllowUserInteraction(false);
        httpConn.setInstanceFollowRedirects(true);
        httpConn.setRequestMethod("GET");
        httpConn.connect(); 

        response = httpConn.getResponseCode();                 
        if (response == HttpURLConnection.HTTP_OK) {
            in = httpConn.getInputStream();                                 
        }                     
    }
    catch (Exception ex)
    {
        throw new IOException("Error connecting to " + URL);
    }
    return in;     
}

これがお役に立てば幸いです:D

于 2012-04-09T17:06:51.967 に答える