2017-05-11 14 views
0

アセットフォルダからローカルディレクトリにファイルをコピーし、ファイルを開きます。アンドロイドノーガットは開いていません。ファイルをアセットフォルダからローカルディレクトリにコピーしてファイルを開きます。android nougat

ファイルをコピーして開くコードです。

public void openSample(Context context) { 
     try { 
      copyFile(context.getAssets().open("sample.xlsx"), new FileOutputStream(new File(Environment.getExternalStorageDirectory() , "Download/sample.xlsx"))); 
      File excelFile = new File(Environment.getExternalStorageDirectory() , "Download/sample.xlsx"); 
      Uri path = null; 
      Intent intent = null; 
      intent = new Intent(Intent.ACTION_VIEW); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
       path = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".provider", excelFile); 

       intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
      } else { 
       path = Uri.fromFile(excelFile); 
      } 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.setDataAndType(path, "application/vnd.ms-excel"); 
      context.startActivity(intent); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void copyFile(InputStream in, OutputStream out) throws IOException { 
     byte[] buffer = new byte[1024]; 
     int read; 
     while ((read = in.read(buffer)) != -1) { 
      out.write(buffer, 0, read); 
     } 
     if (out != null) { 
      out.close(); 
     } 
    } 

ファイルを開くときにエラーが表示される場合は、下記の添付ファイルを確認してください。事前に

Excel_Screenshot

感謝。

+0

マシュマロでのテストはどうですか? –

+0

'android nougat is not opening' ??アンドロイド・ヌガット? Android Nougatはファイルを開こうとしません。 Androidはファイルをまったくオープンしません。ファイルは特殊なアプリケーションによって開かれます。そのメッセージを表示するのはどのアプリですか? – greenapps

+0

@Royそれはマシュマロでうまくいきます。 –

答えて

0
public void openSample(Context context){ 
     in=assetManager.open(fileName); 
     outFile=new File(getExternalFilesDir(null),fileName); 
     out=new FileOutputStream(outFile); 

     copyFile(in,out); 
     in.close(); 
     in=null; 
     out.flush(); 
     out.close(); 
     out=null; 

     }catch(Exception e) 
     { 
     Log.e("tag",e.getMessage()); 
     } 
     Intent intent=new Intent(Intent.ACTION_VIEW); 
     Uri contentUri=getUriForFile((context, context.getApplicationContext().getPackageName() + ".provider", outFile); 
     intent.setDataAndType(
     contentUri, 
     "application/vnd.ms-excel"); 
     intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
     startActivity(intent); 
     } 

private void copyFile(InputStream in,OutputStream out)throws IOException 
     { 
     byte[]buffer=new byte[1024]; 
     int read; 
     while((read=in.read(buffer))!=-1) 
     { 
     out.write(buffer,0,read); 
     } 
     } 
+1

将来の読者のために多くの情報を提供していないため、コードのみの回答は推奨されていません。 – WhatsThePoint

関連する問題