无法使用Chooser为每个应用只询问一次startActivity()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用Chooser为每个应用只询问一次startActivity()相关的知识,希望对你有一定的参考价值。
当您使用选择器执行startActivity()
时,android将列出所有有权处理您的Intent
的应用程序以及将此分配设置为永久或一次性的选项(在ICS上的“始终”和“仅一次”操作按钮,在2.x它的复选框上) )。但是对于这段代码:
public class Redirector {
public static void showActivityWithChooser( Context context, int chooserLabelTitleId, Intent intent ) {
try {
context.startActivity( Intent.createChooser( intent,
context.getResources().getString( chooserLabelTitleId )) );
} catch( Exception e ) {
e.printStackTrace();
}
}
public static void viewInExternalApplication( Context context, String url ) {
Intent intent = new Intent( Intent.ACTION_VIEW );
intent.setData( Uri.parse( url ) );
intent.addFlags( Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET );
showActivityWithChooser( context, R.string.open_chooser_title, intent );
}
}
我没有看到“Always | Just once”按钮,也无法使我的选择永久化(我只列出了应用程序,可以通过点击它来解雇)。我忽略了什么基本原因让Android无法让用户选择持久?
看图片:左边的对话框是我想看到的,但正确的是我现在得到的(两个对话框中不同数量的应用程序是无关紧要的):
对于记录 - 它是过度解释类型的bug(我的)。我正在使用的选择器正是在右侧图像上可以看到的。它一直出现,因为......我一直在呼唤它。我错误地认为选择器提供“Always | Just once”功能,如果用户点击“Always”(并且将显示他/她是否使用“Just once”),则不会显示。但这是错误的。 Chooser总会出现,因为它的作用是让用户选择。 “Always | Just once”功能是不同的 - 它是startActivity()
and startActivityForResult()
调用的Android框架的功能,并将在需要时自动显示 - 如果有多个应用程序(或者恰恰是,多个匹配的intent-filter
)可以处理某些意图。如果您只有一个(或用户之前点击“始终”),它将不会显示。你,作为开发人员不需要关心。
所以要解决这个问题,我只是改变了我的viewInExternalApplication()
代码,使其只需调用startActivity()
:
try {
context.startActivity( intent );
} catch (.... )
并让框架完成其余的工作。
以上是关于无法使用Chooser为每个应用只询问一次startActivity()的主要内容,如果未能解决你的问题,请参考以下文章
无法绑定地址 [10048]:每个套接字地址(协议/网络地址/端口)通常只允许使用一次
registerUserNotificationSettings 只询问我一次“APPNAME 是不是想使用推送通知”。我需要它再次要求我进行测试。如何?