缺少权限在我的应用程序的所有活动都登录保护:
在其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