我的Android Studio应用程序有问题。 我的应用程序需要在外部存储中保存一些带有自定义扩展名(.ard)的文件。 然后,打开文件选择器,选择一个.ard文件,以便应用程序可以打开它。
这里的事情是,当我打开文件选择器时,我找不到我的.ard文件,即使在它们所在的文件夹中,我也只能使用文件资源管理器找到它们,但是从我的Apps文件中找不到选择器。 我想做的另一件事是,当有人从Android文件资源管理器中单击文件时,我打开了应用程序并显示了一个对话框,当您从外部存储中打开文件时会触发一个事件吗?。
而且,如何为.ard文件设置图像,以便当您在文件资源管理器中看到它们时,文件带有该图标?
谢谢。
这是我的Android清单代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="sebgarcia.acardia">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".HomeActivity">
<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.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=".*\\.ard"/>
<!-- These additional pathPattern blocks are to allow for paths with
additional periods in them. See:
http://stackoverflow.com/questions/3400072/pathpattern-to-match-file-extension-does-not-work-if-a-period-exists-elsewhere-i/8599921 -->
<data android:pathPattern=".*\\..*\\.ard"/>
<data android:pathPattern=".*\\..*\\..*\\.ard"/>
<data android:pathPattern=".*\\..*\\..*\\..*\\.ard"/>
<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.ard"/>
<data android:host="*"/>
</intent-filter>
<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:pathPattern=".*\\.ard"/>
<data android:host="*"/>
</intent-filter>
<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:mimeType="application/vnd.ni.custom"
android:scheme="file"/>
<data android:host="*"/>
<data android:pathPattern=".*\\.ard" />
</intent-filter>
</application>
</manifest>
这是我的对话框代码(从活动中调用)
private void StartSearch()
{
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/ard");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try
{
startActivityForResult(
Intent.createChooser(intent, "Select a file to import"), Code
);
}
catch (android.content.ActivityNotFoundException ex)
{
//Doesnt have a File Manager
Toast.makeText(getContext(), "Please, Install a File Manager", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
int Code = 43;
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Code && resultCode == Activity.RESULT_OK) {
if (data != null) {
Uri uri = data.getData();
Toast.makeText(this, "Opened File", Toast.LENGTH_SHORT).show();
}
}
}