我有一个从url下载的zip文件,其路径设置为/storage/emulated/0/myapp/downloadedfile.zip
现在我想打开这个zip文件,选择意图列出可用的应用程序以打开下载的文件。
我在清单中设置了这个:
<activity
android:name=".MyApp"
android:alwaysRetainTaskState="true"
android:launchMode="singleInstance"
android:theme="@style/MyMaterialTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/zip"/>
</intent-filter>
</activity>
现在我用这种方式打开意图选择器
File downloadedfile = new File(Environment.getExternalStoragePublicDirectory(Environment.getExternalStorageDirectory() + "/myapp") + "/" + "downloadedfile.zip");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(downloadedfile), "application/zip");
startActivity(intent);
如果我已经在我的应用上安装了 ESFileExplorer
,这样就行了吗
但我想检查是否有可用的预安装应用,或者我还需要显示 playstore
作为选项之一,以便用户可以下载该应用并安装ESFileExplorer应用程序。
那我该怎么做?
答案 0 :(得分:3)
Android Intent Zip文件
try{
File downloadedfile = new File(Environment.getExternalStoragePublicDirectory(Environment.getExternalStorageDirectory() + "/myapp") + "/" + "downloadedfile.zip");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(downloadedfile), "application/zip");
startActivity(intent);
}catch (ActivityNotFoundException Ae){
//When No application can perform zip file
Uri uri = Uri.parse("market://search?q=" + "application/zip");
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);
try {
startActivity(myAppLinkToMarket);
} catch (ActivityNotFoundException e) {
//the device hasn't installed Google Play
Toast.makeText(MainActivity.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();
}
}
答案 1 :(得分:0)
您可以使用ActivityNotFoundException捕获startActivity意图,并且可以在Play商店中启动ES File Explorer市场应用程序。