如何读取在Android web浏览器中单击的文件?

如何读取在Android web浏览器中单击的文件?,android,browser,Android,Browser,如何创建支持在web浏览器中单击的特定文件类型的活动 以下是我尝试过的: AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.sf.asap" android:versionCode="212" android:versionName="2.1.2"> <application android:label="@

如何创建支持在web浏览器中单击的特定文件类型的活动

以下是我尝试过的:

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="net.sf.asap" android:versionCode="212" android:versionName="2.1.2">
    <application android:label="@string/app_name" android:icon="@drawable/icon">
        <activity android:name=".FileSelector" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Player" android:label="@string/playing">
            <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:scheme="file" android:host="*" />
                <data android:scheme="http" android:host="*" />
                <data android:scheme="https" android:host="*" />
                <data android:pathPattern=".*\\.sap" />
                <data android:pathPattern=".*\\.cmc" />
                <data android:pathPattern=".*\\.cm3" />
                <data android:pathPattern=".*\\.cmr" />
                <data android:pathPattern=".*\\.cms" />
                <data android:pathPattern=".*\\.dmc" />
                <data android:pathPattern=".*\\.dlt" />
                <data android:pathPattern=".*\\.mpt" />
                <data android:pathPattern=".*\\.mpd" />
                <data android:pathPattern=".*\\.rmt" />
                <data android:pathPattern=".*\\.tmc" />
                <data android:pathPattern=".*\\.tm8" />
                <data android:pathPattern=".*\\.tm2" />
            </intent-filter>
        </activity>
    </application>
</manifest> 
Uri uri = getIntent().getData();
InputStream is = getContentResolver().openInputStream(uri);
当我在浏览器(Android 1.6)中输入URL时,我得到:


首先,以下是一个非常糟糕的想法:

            <data android:scheme="file" android:host="*" />
            <data android:scheme="http" android:host="*" />
            <data android:scheme="https" android:host="*" />

如果您中断用户在其设备上任何位置单击的每个链接,则用户将使用镐攻击您,这样他们就可以选择使用您的应用程序处理该链接。请把这些线移走


关于您的错误,您正在尝试打开一个Web URL(
http://asap.sourceforge.net/X_Ray_2.sap
)通过
getContentResolver().openInputStream()
。这是不受支持的。
ContentResolver
可与Android内容提供商一起使用。如果您想从Internet上下载一些东西,有一些API,例如HttpClient。

不,我按pathPattern和scheme/host进行筛选只是为了使pathPattern工作(显然scheme=“*”不工作)。我的应用程序仅针对我列出的扩展名提供给用户(检查了web浏览器和OI文件管理器)。getContentResolver().openInputStream()适用于“文件:”URL,我希望它也适用于“http:”。非常感谢。
            <data android:scheme="file" android:host="*" />
            <data android:scheme="http" android:host="*" />
            <data android:scheme="https" android:host="*" />