に欠け許可にすべての活動は、ログインで保護されて失敗します。
各アクティビティのチェックがそのonCreate
/onShow
にユーザーがログインしているかどうかを-callbackその場合は、特別なことは何も起こりません。ユーザがログインしていない場合には、これらのコールバックは、LoginActivity
にユーザーをリダイレクトし、現在の活動終了:に追加さ再送意図が原因私のアプリでURI
Intent loginIntent = new Intent(this, LoginActivity.class);
loginIntent.putExtra(EXTRA_ORIGINAL_INTENT, getIntent());
finish();
startActivity(loginIntent);
ショー上記線として
、現在の活動を開始するために使用された元のIntent
をloginIntent
のエキストラ。したがって、LoginActivity
は成功したログイン後にIntent
を再送信できます...理論的には。しかし、それは必ずしも機能しません。
ランチャーから起動したときにそれは動作します:
Intent with ACTION_MAIN --> MainActivity --> Redirect to LoginActivity -->
Redirect back to MainActivity after successful login
クロム上の共有ボタンを使用する場合には動作しません:
Intent with ACTION_SEND --> SendActivity --> Redirect to LoginActivity -->
Redirect back to SendActivity after successful login
問題が再送信しようとする最後のリダイレクトです元のIntent
は、最初に起動するために使用されました。SendActivity
:
// Resend original intent
startActivity((Intent) getIntent().getExtra(EXTRA_ORIGINAL_INTENT));
それは例外で失敗します。
Caused by: java.lang.SecurityException: Uid 10075 does not have permission to uri 0 @ content://com.android.chrome.FileProvider/images/screenshot/6471932623902346234.jpg
そして今、私の質問:私は、その許可例外を発生させることなくIntent
を再送信するにはどうすればよい
?
どのように必要な権限を渡すことができますか?
注:私は本当に現在の活動を終えたとIntent
を再送信すると、そのリダイレクト行動をしたい
。さまざまな理由から、アクティビティ(MainActivity
、SendActivity
)をスタックに保存してからLoginActivity
に戻すことはできません。
あなたのアイデアをありがとう。私はすでにgrant-flagsを使って演奏し、データ/エクストラを明示的に設定しました。しかし、それは動作しませんでした。しかし、私は再送の意図がどのように働くかを考え出したと思う。今、リダイレクトするときに、正しいターゲットアクティビティクラス、たとえば 'SendActivity'を設定することで、インテントを明示的なインテントに"変換 "します。私はこの暗黙の意図を再送することは許されていないようですが、明示的な意図は期待通りに機能します。とにかくやりたかったのです;-) – Biggie