这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
在AndroidManifest.xml注册ACTION事件
<activity android:name="com.test.app.MainActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="这里的名称会对外显示" android:launchMode="singleTask" android:screenOrientation="portrait"> //注册接收分享 <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> //接收分享的文件类型 <data android:mimeType="image/*" /> <data android:mimeType="application/msword" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> <data android:mimeType="application/vnd.ms-excel" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> <data android:mimeType="application/vnd.ms-powerpoint" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" /> <data android:mimeType="application/pdf" /> <data android:mimeType="text/plain" /> </intent-filter> //注册默认打开事件,微信、QQ的其他应用打开 <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> //接收打开的文件类型 <data android:scheme="file" /> <data android:scheme="content" /> <data android:mimeType="image/*" /> <data android:mimeType="application/msword" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> <data android:mimeType="application/vnd.ms-excel" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> <data android:mimeType="application/vnd.ms-powerpoint" /> <data android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" /> <data android:mimeType="application/pdf" /> <data android:mimeType="text/plain" /> </intent-filter> </activity>
在用于接收分享的Activity里面加接收代码
- 当APP进程在后台时,会调用Activity的onNewIntent方法
- 当APP进程被杀死时,会调用onCreate方法
所以在两个方法中都需要监听事件
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); receiveActionSend(intent); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); receiveActionSend(intent); }
receiveActionSend方法如下
public void receiveActionSend(Intent intent) { String action = intent.getAction(); String type = intent.getType(); //判断action事件 if (type == null || (!Intent.ACTION_VIEW.equals(action) && !Intent.ACTION_SEND.equals(action))) { return; } //取出文件uri Uri uri = intent.getData(); if (uri == null) { uri = intent.getParcelableExtra(Intent.EXTRA_STREAM); } //获取文件真实地址 String file