应用程序通过共享时导出文本(.txt)文件,我可以看到Gmail,Dropbox,驱动器,共享等应用程序通过该应用程序共享文件。我想在应用程序中导入该文本文件以进行进一步修改。 txt文件。
我应该在清单或主要活动中实施什么?
我应该使用 INTENT
过滤器还是应该使用 getUriForFile()
方法来接收文本文件?
我的应用如何显示在其他导出文本文件的应用共享列表中?
答案 0 :(得分:1)
您可以使用以下intent-filter
将文件从另一个应用程序导入清单中
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="*/*"/>
<data android:mimeType="text/plain"/>
然后在活动中使用以下代码获取文本文件的URI
private Uri getUriForFile() {
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (TextUtils.equals(Intent.ACTION_SEND, action) && !TextUtils.isEmpty(type)) {
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (uri != null) {
Log.e("uri",uri.toString());
return uri;
}
}
return null;
}
更新
如果该活动是您的启动器活动,请使用以下意图过滤器
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<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.SEND_MULTIPLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="*/*"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
答案 1 :(得分:0)
我认为您必须将应用程序与文件扩展名相关联,为此:
<data android:scheme="file" /> //Means local file
<data android:mimeType="*/*"/> //This accept any mimeType
<data android:pathPattern=".*\\.txt" /> //Your excepted extention
之后,打开Manifest
并添加以下行(您必须在目标活动中添加一个意图过滤器):
<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" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.txt" />
</intent-filter>
希望这可以为您提供帮助。