Android 使用“将数据传递给活动”;通过“共享”;屏幕

Android 使用“将数据传递给活动”;通过“共享”;屏幕,android,android-intent,intentfilter,Android,Android Intent,Intentfilter,我正在尝试将数据传递给我的活动,但不幸的是,我仍然没有成功。我试图完成的是在文件浏览器中选择一个文件,共享它并将数据传递给我的活动 在我的清单中,我添加了一个意图过滤器: <activity android:name=".MyActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.SEND"/

我正在尝试将数据传递给我的活动,但不幸的是,我仍然没有成功。我试图完成的是在文件浏览器中选择一个文件,共享它并将数据传递给我的活动

在我的清单中,我添加了一个意图过滤器:

<activity android:name=".MyActivity" android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="*/*"/>
    </intent-filter>            
</activity>
当我从我的文件中选择一个文件并将其共享时,我的应用程序在列表中可见,当我单击它时,它将启动我的活动,但intent.getData();始终返回null。
我错过什么了吗?谢谢。

您可以从以下示例中获取数据:

与元素一起使用。例如,要处理到twitter.com的所有链接,您需要将以下内容放在您的AndroidManifest.xml中:

<intent-filter>
    <data android:scheme="http" android:host="twitter.com"/>
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

:

strong textUri data=getIntent().getData();
字符串scheme=data.getScheme();//“http”
字符串host=data.getHost();//“twitter.com”
List params=data.getPathSegments();
String first=params.get(0);//“地位”
字符串秒=params.get(1);//"1234"
您可以在活动中的任何位置执行上述操作,但可能需要在onCreate()中执行。您还可以使用params.size()获取路径段的数量i
entercode here
n Uri。查看javadoc或android开发人员网站,了解可以用于提取特定部分的其他Uri方法


谢谢,但我认为这对我没有帮助。我不需要处理在浏览器中单击的链接,我需要将一个文件从我的SD卡传递到活动(实际上,文件的路径可以做到这一点)。当我将操作更改为android.action.VIEW时,我的应用程序将不再列在“通过共享”屏幕中。我的问题是,getIntent().getData();返回null。
<intent-filter>
    <data android:scheme="http" android:host="twitter.com"/>
    <action android:name="android.intent.action.VIEW" />
</intent-filter>
<intent-filter>
    <data android:scheme="my.special.scheme" />
    <action android:name="android.intent.action.VIEW" />
</intent-filter>
strong textUri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"