Android 接收系统分享的文件
测试使用环境:
小米11 Android 11
代码如下:
XML清单 配置
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="导入文件">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
Java 代码
//读取分享的文件并把文件导入到私有目录
public boolean readFileFromShare(String fileName) {
Intent intent = getIntent();
String type = intent.getType();
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_SEND)) {
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (uri != null) {
try {
File outFile = new File(getExternalFilesDir(null).getPath() + File.separator + fileName);
InputStream inputStream = getContentResolver().openInputStream(uri);
FileOutputStream fos = new FileOutputStream(outFile);
byte[] buf = new byte[1024];
int readCount = 0;
while ((readCount = inputStream.read(buf)) != -1) {
fos.write(buf, 0, readCount);
}
fos.flush();
inputStream.close();
fos.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}