2017-10-25 6 views
2

現在、画像を共有するために「共有」ボタンをクリックすると、Androidアプリケーション自体で呼び出される共有インテントを作成しようとしています。しかし、Androidのヌガーでどのように共有インテント機能に変更して、私はこの行にNullPointerExceptionが取得しています:NullPointerExceptionがAndroid Nougatで共有されている

Uri uImageFile = FileProvider.getUriForFile(DetailActivity.this, DetailActivity.this.getApplicationContext().getPackageName(), imageFile); 

これは私が受信したエラーだった:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference 
                       at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:584) 
                       at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:558) 
                       at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400) 

ここでの完全なコードです私のシェア意向方法:

private void shareIntent() { 
    Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
    sharingIntent.setType("image/jpg"); 
    File imageFile = new File(data.get(pos).getUrl()); 
    Uri uImageFile = FileProvider.getUriForFile(DetailActivity.this, DetailActivity.this.getApplicationContext().getPackageName(), imageFile); 
    sharingIntent.putExtra(Intent.EXTRA_STREAM, uImageFile); 
    startActivity(Intent.createChooser(sharingIntent, getResources().getText(R.string.share_to))); 
} 

data.get(pos).getUrl()は、OU、私はそれがParcelableを実装して作られたカスタムクラスのURLを返し、それを印刷するときトン、それは次のようなディレクトリを返します。 "/storage/emulated/0/Pictures/primitive/Primitive-79538313.jpg"

はあなたが提供することができます任意の助けをありがとう!

+0

アプリは外部ストレージにアクセスする権限を持っていますか? – Xenolion

+0

はい、私はプログラムに次の権限を与えました: Rahooligan

答えて

0
は、あなたの活動にこのコードを追加します。この

private void shareIntent() { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("image/jepg"); 
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+data.get(pos).getUrl())); 
    startActivity(Intent.createChooser(shareIntent, "Share image")); 
} 

にコードを変更し

onCreate()

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); 
StrictMode.setVmPolicy(builder.build()); 
関連する問題