1

我有一个应用程序在我的清单中关联 pdf 文件(通过意图过滤器),所以当有人在默认浏览器中单击 pdf 链接时,我可以使用我的应用程序执行该操作并使用进度条下载它。我的问题是,这是一种我可以在清单中关联其他文件但不是“硬编码”的方式,而是让用户在首选项中选择(或编写)该文件扩展名,我可以从代码中动态添加它。我知道这可能可以通过广播接收器完成,但找不到任何示例或简单代码。我在 bsplayer 设置中看到过类似的偏好菜单 .. 但不能发布图像,因为没有足够的声誉。

我将尝试更详细地解释我的问题,因为我认为下面的答案存在一些误解。

  1. 我有一个应用程序,在我的清单中有闲置代码。

       <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.我启动了我的应用程序,它注册了 .pdf 文件。所以下次我在浏览器中单击 pdf 链接时,会弹出一个窗口,让我选择应该使用哪个应用程序来完成该操作。如果我选择我的应用程序,我的主要活动将启动,我使用 getIntent() 并且我的应用程序使用进度条下载文件。

3.问题是我想下载和其他类似的文件。jpg,png .. 等,但给用户一个选择,或者甚至让他为他想要使用我的应用程序下载的文件编写扩展名,如果点击某个链接会导致那种文件。

4.为了实现这一点,文件扩展名应该在代码中动态添加,而不是在清单中。我正在寻找广播接收器的一些示例,因为该类可以使用 IntentFilter 类,但不能真正理解我应该用它做什么。

5.我的主要目标:启动我的应用程序,有一些微调或编辑框的布局。用户选择/编写一些扩展名(.dwf)。该扩展程序现在已在我的应用程序中注册。如果下次用户浏览互联网时点击指向 .dwf 文件的链接,他可以选择继续使用我的应用程序进行操作。并且文件应该像.pdf一样下载

6.sry 我的英语不好,我们将不胜感激。还有代码;)

4

1 回答 1

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。我相信你必须有不同的活动来处理不同的文件类型,然后有选择地禁用

于 2012-08-15T11:03:04.667 回答