2016-11-15 9 views
0

私は以下のコードを使用して画像を共有しています。これはviber以外のほとんどのアプリでうまく機能します。たび私はfolliwngエラーでクラッシュしたViberの、Viberのために画像を共有しようとしています:ファイルプロバイダ経由でviberアプリに画像を共有するには?

FATAL EXCEPTION: ThreadManager::idleTasksHandler 
           Process: com.viber.voip, PID: 16668 
           java.lang.IllegalArgumentException: column '_data' does not exist 
            at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303) 
            at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:78) 
            at com.viber.voip.util.aw.a(SourceFile:238) 
            at com.viber.voip.util.aw.b(SourceFile:206) 
            at com.viber.voip.util.aw.a(SourceFile:141) 
            at com.viber.voip.util.b.n.a(SourceFile:1204) 
            at com.viber.voip.util.bm.run(SourceFile:207) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at com.viber.voip.be.dispatchMessage(SourceFile:32) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.os.HandlerThread.run(HandlerThread.java:61) 
            at com.viber.voip.cj.run(SourceFile:100) 

私Uriessは
content://com.myapp.fileprovider/share_images/nxt_emoji_26.png のようなコード

​​

答えて

1

Viberのの著者が経験不足であり、そのすべてcontentUriだと思うように見えます値はMediaStoreから来ており、存在しない_dataの列を照会しています。

My LegacyCompatCursorWrapperFileProviderと一緒に使用して、this Stack Overflow answerに示されているアプローチに基づいてViberのようなバグのあるアプリとの互換性を向上させようとします。 This sample appLegacyCompatCursorWrapperの使用を示しています。 FileProvider

/*** 
Copyright (c) 2015 CommonsWare, LLC 
Licensed under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy 
of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required 
by applicable law or agreed to in writing, software distributed under the 
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
OF ANY KIND, either express or implied. See the License for the specific 
language governing permissions and limitations under the License. 

From _The Busy Coder's Guide to Android Development_ 
https://commonsware.com/Android 
*/ 

package com.commonsware.android.cp.v4file; 

import android.database.Cursor; 
import android.net.Uri; 
import android.support.v4.content.FileProvider; 
import com.commonsware.cwac.provider.LegacyCompatCursorWrapper; 

public class LegacyCompatFileProvider extends FileProvider { 
    @Override 
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { 
    return(new LegacyCompatCursorWrapper(super.query(uri, projection, selection, selectionArgs, sortOrder))); 
    } 
} 

次に、マニフェストにあなたのFileProviderサブクラスを登録し、それ以外の場合はあなたのようにそれを使用する:あなたはquery()をオーバーライドし、LegacyCompatCursorWrappersuper.query()によって返さCursorをラップ、FileProviderをサブクラス化。

+0

私はこのソリューションをPDF用に試しましたが、うまくいきません。あなたはviberを介してPDF共有のためのいくつかの解決策を持っていますか?PDFファイルは私の内部メモリに保存されています。 – eJoe

関連する問題