0

私は2つのアプリケーションを持っており、データ(テキストとイメージ)を共有する必要があります。テキストを変更した後に画像を変更した場合(テキストを入力した後に写真をアップロードした場合や、テキストを入力して画像を再アップロードした場合)、2番目のアプリケーションで画像が更新されません。 ImageViewのTextWatcherのようなものが必要です。何か案は ?Android:アップデートImage ShareActionProviderの意図

ここに私の最初のアプリケーションの重要な部分があります:

ウリimageUri;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

     @Override 
     public void afterTextChanged(Editable s) { 
      if (mShareActionProvider != null) { 
       mShareActionProvider.setShareIntent(setShareIntent()); 
      } 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.layout_menu, menu); 

    MenuItem share = menu.findItem(R.id.menu_item_share); 

    mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(share); 
    mShareActionProvider.setShareIntent(setShareIntent()); 
    invalidateOptionsMenu(); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    setMessageIntent(); 
    return super.onOptionsItemSelected(item); 
} 

private Intent setShareIntent() { 
    String share = message.getText().toString(); 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 

    shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri); 
    if (imageUri != null) { 
     shareIntent.setType("image/png"); 
    } else { 
     shareIntent.setType("text/plain"); 
    } 
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Here goes my sharing"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, share); 
    return shareIntent; 
} 

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

       imageUri = data.getData(); 
       String[] path = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(imageUri, path, null, null, null); 
       cursor.moveToFirst(); 
       int index = cursor.getColumnIndex(path[0]); 
       String imgString = cursor.getString(index); 
       image.setImageURI(imageUri); 
       break; 

    } 

} 

そして、ここで私がデータを共有し、私の第二のアプリケーション、次のとおりです。他のアプリケーション、あなたの後の第二のアプリケーションでその時のonCreateメソッドを初めて呼び出し二度目に

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    Intent receiver = getIntent(); 
    String received_text = receiver.getStringExtra(receiver.EXTRA_TEXT); 

    Uri imageUri = (Uri) receiver.getParcelableExtra(Intent.EXTRA_STREAM); 
    if (imageUri != null) { 
     Bitmap bitmap = null; 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     image.setImageBitmap(bitmap); 

    } 
    if (received_text != null) { 
     text.setText(received_text); 
    } 
} 

答えて

0

これを行うとばかげて、さらに問題が発生する可能性がありますが、今は完全に正常に動作しているかどうかはわかりません。もし誰かがこれが悪い考えだと思ったら、どうか、教えてください。 これは私がやったことです:

  1. 私はグローバルとしてshareIntentを宣言しました。
  2. 新しい写真をアップロードした後でもimageUrlをインテントに入れました
  3. imageUrlをafterTextChanged()関数のインテントに入れましたので、テキストを変更するたびに新しいimageUriも設定されます。
0

初めてアップロード画像2番目のアプリケーションがすでに作成されている場合、最初のアプリケーションから別のアプリケーションへの画像呼び出しは、その時間はonCreteを呼び出さないので、onResumeメソッドのほうが優れています。

+0

問題は私の最初のアプリケーションにあります。原因imageUrlは変更されません。それはテキストを変更したときにのみ変更され、そこにShareActionProviderとOnCreateOptionMenuにもインテントが設定されます。 – Astgh

+0

インテントでイメージURIを設定し、onActivityResultを設定したときにログを設定します。 –