当用户在其网络浏览器中(在Android手机上)键入我的.someExt
文件的网址时,会显示以下消息:
此内容是不受支持的内容。你真的想下载吗?
相反,我想将.someExt
(我的自定义文件扩展名)与我的Android应用程序(用户之前已经下载过)关联起来,这样当用户在浏览器中将网址键入.someExt
我的应用程序时将打开文件。
如何实现呢?我想我必须在我的Activity中使用manifest和一些“handle”方法来完成。
基于:Associate App with file extension - Intent filter Not working?
我用过:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/someExt" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="*" />
<data android:scheme="file" />
<data android:scheme="smb" />
<data android:scheme="content" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.someExt" />
</intent-filter>
</activity>
现在,当用户输入我的.someExt
的网址时,正在下载文件,我可以在下载完成后打开它(因此我的应用程序将运行它)。但我不希望所有这些额外的点击 - 我希望它是:
.someExt
的链接。.someExt
。而不是:
.someExt
的链接。.someExt
。答案 0 :(得分:0)
我认为您无法在Android中使用不同类型的浏览器实现此功能。 URL用户类型大多数时间由浏览器处理。如何处理该方案取决于浏览器的行为。如果您的方案是http
,浏览器将尝试使用它自己打开并自行处理。
目前,大多数浏览器都添加了对market
方案的支持。如果URI方案为market
,则会跳转到Google Play或其他市场。
但可以使用Intent
从其他应用中完成。
声明您的活动,如下所示,以接收ACTION_VIEW
行动。
<activity
android:name=".MainActivity2Activity"
android:label="@string/title_activity_main_activity2">
<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:host="com.example.myapp"
android:mimeType="*/*"
android:pathPattern=".*\\.someExt"
android:scheme="http" />
</intent-filter>
</activity>
从其他应用中,您可以这样做。
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("http://com.example.myapp/test.someExt"), "*/*");
intent.setPackage("com.example.myapplication");
startActivity(intent);