我有一个应用程序将pdf文件关联到我的Manifest(通过intent-filters),所以当有人点击默认浏览器中的pdf链接时,我可以用我的应用程序执行该操作并使用进度条下载它。我的问题是,这是一种方式,我可以关联其他文件,但不能在我的清单中“硬编码”,但让用户选择(或写入)首选项中的文件扩展,例如我可以从代码中动态添加它。我知道可能这可以通过广播接收器完成,但无法找到任何示例或简单的代码。我已经在bsplayer设置中看到了喜欢这样的偏好菜单..但是不能发布图片因为没有足够的声誉。
我会尝试更详细地解释我的问题,因为我认为对下面的答案存在一些误解。
我有一个应用程序,在我的清单中有可用的代码。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:host="*" />
<data android:pathPattern=".*\\.pdf" />
</intent-filter>
2.i启动我的应用程序,用它注册.pdf文件。所以下次我点击浏览器中的pdf链接时,会弹出一个窗口,让我选择应该用什么应用程序来完成该操作。如果我选择我的应用程序,我的主要活动就会启动,我使用getIntent(),我的应用程序使用进度条下载文件。
3.问题是我想下载和其他类似的文件即。 jpg,png ..等等,但是让用户可以选择使用我的应用程序,或者甚至让他为使用我的应用程序下载的文件编写扩展名,如果点击链接导致那种文件。
4.为了使这件事发生,文件扩展应该在代码中动态添加,而不是在清单中。我正在寻找一些广播接收器的例子,因为那个类可以使用IntentFilter类,但是不能真正理解我应该用它做什么。
5.我的主要目标:启动我的应用程序,有一些微调器或编辑框的布局。用户选择/写入一些扩展名(.dwf)。该扩展程序现已在我的应用程序中注册。如果下次用户浏览互联网点击导致.dwf文件的链接,他可以选择继续使用我的应用程序操作。并且应该像.pdf一样下载文件
6.sry我的英语不好,一些帮助将不胜感激。也代码;)
答案 0 :(得分:0)
boolean enabled=prefs.getBoolean(key, false);
int flag=(enabled ?
PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
ComponentName component=new ComponentName(MyActivity.this, TargetActivity.class);
getPackageManager()
.setComponentEnabledSetting(component, flag,
PackageManager.DONT_KILL_APP);
根据您的偏好,您可以在BOOT_COMPLETED
收件人中停用处理文件类型的活动。我相信你必须有不同的活动来处理不同的文件类型,然后有选择地禁用