缺少權限在我的應用程序的所有活動都登錄保護:
在其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
它不使用共享按鈕時,在Chrome瀏覽器:
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
返回給它們是不可選的。
感謝您的想法。我已經使用授權標誌並明確設置了數據/附加組件。但它沒有奏效。不過我想我明白了重新發送意圖的方式。現在,當重定向時,我通過設置正確的目標活動類(例如「SendActivity」)將意圖「轉換」爲明確的意圖。似乎我不允許重新發送這種隱含的意圖,但明確的意圖按預期工作。這就是我想要做的事情;-) – Biggie