2017-11-13 17 views
0

外部記憶装置からメールに画像を添付できません。 この行を使ってみました。この場合mail外部記憶装置からメールで画像を送信する

Uri image = Uri.parse("/storage/emulated/0/Pictures/park.jpg");

can't attach empty fileようなメッセージを示しています。

その後、次のコードを実行しようとしています。クラッシュレポートを表示しています。私はこれについて以前に尋ねられた質問をいくつか見てきました。それでも私は完璧な答えを見つけることができません。私はshareボタンをクリックしたときに、私はcrashを取得しています

Uri image = FileProvider.getUriForFile(this, "com.example.chint.asyntaskexample", new File("/storage/emulated/0/Pictures/", "park.jpg")); 

    //Context 
    //Package 
    //File path (/storage/emulated/0/Pictures/park.jpg) 

    Intent i = new Intent(Intent.ACTION_SEND); 
    i.putExtra(Intent.EXTRA_STREAM, image); 
    i.setType("image*//*"); 

    Intent chooser = Intent.createChooser(i, "Send Image"); 
    if (i.resolveActivity(getPackageManager()) != null) 
     startActivity(chooser); 
    else 
     Toast.makeText(this, "Nothing", Toast.LENGTH_SHORT).show(); 

ここ

は...私が使用していたコードです。ここで が logcat ...

com.example.chint.asyntaskexample E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.chint.asyntaskexample, PID: 7157 
                      java.lang.IllegalStateException: Could not execute method for android:onClick 
                       at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
                       at android.view.View.performClick(View.java:6256) 
                       at android.view.View$PerformClick.run(View.java:24697) 
                       at android.os.Handler.handleCallback(Handler.java:789) 
                       at android.os.Handler.dispatchMessage(Handler.java:98) 
                       at android.os.Looper.loop(Looper.java:164) 
                       at android.app.ActivityThread.main(ActivityThread.java:6541) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
                       Caused by: java.lang.reflect.InvocationTargetException 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                       at android.view.View.performClick(View.java:6256)  
                       at android.view.View$PerformClick.run(View.java:24697)  
                       at android.os.Handler.handleCallback(Handler.java:789)  
                       at android.os.Handler.dispatchMessage(Handler.java:98)  
                       at android.os.Looper.loop(Looper.java:164)  
                       at android.app.ActivityThread.main(ActivityThread.java:6541)  
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  
                       Caused by: 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:583) 
                       at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:557) 
                       at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:399) 
                       at com.example.chint.asyntaskexample.MainActivity.sendImage(MainActivity.java:105) 
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
                       at android.view.View.performClick(View.java:6256)  
                       at android.view.View$PerformClick.run(View.java:24697)  
                       at android.os.Handler.handleCallback(Handler.java:789)  
                       at android.os.Handler.dispatchMessage(Handler.java:98)  
                       at android.os.Looper.loop(Looper.java:164)  
                       at android.app.ActivityThread.main(ActivityThread.java:6541)  
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  

である私を助けてください..事前に

感謝を。

答えて

0

ここで私は

String filePath = "/storage/emulated/0/Pictures/park.jpg"; 

      Bitmap screenShot = BitmapFactory.decodeFile(filePath); 
      File pic = new File(filePath); 
      FileOutputStream out = null; 
      try { 
       out = new FileOutputStream(pic); 
       screenShot.compress(Bitmap.CompressFormat.JPEG, 100, out); 
       out.flush(); 
       out.close(); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      Uri uri = Uri.fromFile(pic); 

      Intent sendIntent = new Intent(Intent.ACTION_SEND); 
      sendIntent.setType("message/rfc822"); 
      sendIntent.putExtra(Intent.EXTRA_STREAM, uri); 
      Intent chooser = Intent.createChooser(sendIntent, "Send Image"); 

      if(sendIntent.resolveActivity(getPackageManager()) != null) 
       startActivity(chooser); 
      else 
       Toast.makeText(ScreenShortAlertDialogue.this, "No Available Applications to send the image", Toast.LENGTH_LONG).show(); 
...思い付いた答えがあります
0
Uri image = Uri.parse("/storage/emulated/0/Pictures/park.jpg"); 

スキームがないので、有効なUriではありません。また、パスをハードコーディングしないでください。それ以外では、fileUriの値が渡されているため、Android 7.0以降では動作しません。

Caused by: 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 

どうやら、あなたはcom.example.chint.asyntaskexampleの権限文字列を使用してFileProviderため<provider>要素を持っていません。

また、image*//*は有効なMIMEタイプではありません。

関連する問題