如何检查我的应用程序是否设置为默认或不是在android中?
问题描述:
我想检查我的应用程序是否设置为我在应用程序内部处理的Intents的默认应用程序。如何检查我的应用程序是否设置为默认或不是在android中?
作为一个例子ff多个应用程序支持打开指定的文件格式。我需要将我的应用程序作为我的代码的默认应用程序。如何使我的应用程序成为默认的(来自代码)?谁能帮我?
至少我想检查我的应用程序启动时,并重定向用户填写一些信息,如果我的应用程序未设置为设备上的默认值。
答
据我所知这是不可能的。该对话由系统处理 - 只有当用户从列表中选择您的应用时才会启动您的应用。
允许这样的行为会影响用户控制其默认应用程序的能力,从技术角度来看,意味着一个进程及其内存将不得不分配给列表中的每个应用程序。
答
您可以使用此方法:
public static boolean isOurAppDefault(Context context) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com"));
ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(browserIntent,PackageManager.MATCH_DEFAULT_ONLY);
String defaultBrowserPkg = null;
if (resolveInfo != null) {
if (resolveInfo.activityInfo != null) {
defaultBrowserPkg = resolveInfo.activityInfo.packageName;
}
}
return TextUtils.equals(context.getPackageName(), defaultBrowserPkg);
}
这是实际的一些编辑器或浏览器。在其他情况下,为意图使用不同的Uri数据。
请定义您的意思是“是默认”。 – CommonsWare 2010-07-27 05:44:31
您的意思是说安装了两个不同的应用程序来处理同一活动?用于处理短消息服务的内置“消息传递”和“Handcent SMS”?如果用户已经设置了默认的应用程序 - 你想知道它是否属于你的?我理解你的问题是否正确? – 2010-07-27 07:46:47
我从我的应用程序下载ics文件。另一个应用程序也可以下载ics文件。当用户尝试打开文件时,Android设备将列出可执行的应用程序。当用户选择我的应用程序打开ics文件时,我会从用户(关于用户)得到一些细节。如果他们选择我的应用程序作为默认,我不会询问有关用户的详细信息。为此,我需要检查我的应用程序是否为默认应用程序或不。如果它默认我会直接打开文件,否则我希望获得详细信息关于用户。 – SRS 2010-07-27 08:42:43