相关疑难解决方法(0)

`getContentResolver().openInputStream(uri)`抛出FileNotFoundException

我用这个意图让用户选择一张照片:

Intent intent = new Intent(Intent.ACTION_PICK, 
                           MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, INTENT_SELECT_PHOTO);
Run Code Online (Sandbox Code Playgroud)

并在onActivityResult:

Uri uri = data.getData();
InputStream inputStream = getContentResolver().openInputStream(uri);
Run Code Online (Sandbox Code Playgroud)

但它会引发FileNotFoundException一些Android设备.

价值uri:

content://media/external/images/media/26467
Run Code Online (Sandbox Code Playgroud)

引发的异常:

java.io.FileNotFoundException: No such file or directory
Run Code Online (Sandbox Code Playgroud)

并且非常奇怪的是它不会在其他一些Android设备上抛出此异常.什么会导致此错误以及如何解决?

android image android-contentresolver

9
推荐指数
1
解决办法
1万
查看次数

注册活动以打开具有某些扩展名的任何文件

我一直在研究一个设置为打开具有特定扩展名的文件的应用程序.它可以在Gmail上运行一段时间(有些文件打开,有些则没有),我可以从文件资源管理器打开一个文件.

我无法打开手机上的电子邮件应用程序中的文件,但正如我所说,有些文件无法使用我的应用程序从Gmail应用程序打开,有些文件也是如此!

这是我的代码.

             <intent-filter > <!-- Solution from @richardlegget on this question http://stackoverflow.com/questions/8148629/intent-filter-to-download-attachment-from-gmail-apps-on-android -->
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/octet-stream" android:pathPattern=".*\\.myextension" />
             </intent-filter>
             <intent-filter >
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="*/*" android:scheme="file" android:host="*" android:pathPattern=".*\\.myextension" />
             </intent-filter>
Run Code Online (Sandbox Code Playgroud)

我的问题

是否有一组一套意图过滤器,可以从Android设备上的任何位置向包含所需文件扩展名的任何文件注册特定活动?

android android-intent

7
推荐指数
1
解决办法
2337
查看次数

从我的应用程序android中的gmail应用程序读取附件的安全性异常

在我们的应用程序中,我们需要从电子邮件客户端读取附件并将​​其上载到服务器.对于默认的android电子邮件客户端一切正常,但面向gmail应用程序

java.lang.SecurityException: Permission Denial: opening provider   com.google.android.gm.provider.MailProvider from ProcessRecord (pid=11298, uid=10068) requires com.google.android.gm.permission.READ_GMAIL or com.google.android.gm.permission.WRITE_GMAIL
Run Code Online (Sandbox Code Playgroud)

甚至尝试过授予Gmail读写权限但无效.

观察是

它适用于Nexus,但对于三星设备4.2和4.1,如果第一次创建活动,最初工作正常,但如果活动在背景中抛出上述异常.

尝试使用下面的代码获取附件文件名.

    Cursor cursor = getContentResolver().query(openIntent.getData(),
            new String[] { MediaStore.MediaColumns.DISPLAY_NAME }, null,
            null, null);

    cursor.moveToFirst();
    int nameIndex = cursor
            .getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME);
    if (nameIndex >= 0) {
        NCUtil.clickedImageTitle = cursor.getString(nameIndex);
        path = cursor.getString(nameIndex);
    }
    cursor.close();
Run Code Online (Sandbox Code Playgroud)

我的清单文件

        <activity
        android:name="com.ncomputing.vspacemobile.NCMainActivity"
        android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
        android:excludeFromRecents="true"
        android:launchMode="singleTask"
        android:screenOrientation="sensorPortait"
        android:theme="@android:style/Theme.NoTitleBar"
        android:windowSoftInputMode="adjustPan" >

        <!-- For email attachments -->
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="application/pdf" />
            <data android:mimeType="application/msword" />
            <data android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" …
Run Code Online (Sandbox Code Playgroud)

android

6
推荐指数
2
解决办法
1918
查看次数