2017-08-21 12 views
1

私は(emulator running AndroidとUbunutを実行しているホストシステム間)の共有フォルダ内のファイルを作成しようとしています:は/ mnt /共有/ androidSharedアンドロイド - オープンに失敗しました:中EACCES(パーミッション拒否)を/ mnt

を私は、権限の問題を持っていないし、私のマニフェストファイルに必要な行を追加しました:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.yalishanda.myapplication"> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

しかし、私はこのerrosを取得するファイルを作成しようとしたとき:

java.io.FileNotFoundException:を/ mnt /共有/ androidSharedを/test.txt:オープンに失敗しました:EACCES(許可が拒否されました)

対応するコード:

public void onButtonTap(View v){ 

     String filepath ="/mnt/shared/androidShared/test.txt"; 
     FileOutputStream fos = null; 
     try { 
      FileOutputStream outputStream = new FileOutputStream (new File("/mnt/shared/androidShared/test.txt")); 
      byte[] buffer = "This will be writtent in test.txt".getBytes(); 
      fos.write(buffer, 0, buffer.length); 
      fos.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

は、私はまた、次のようにバックスラッシュをエスケープしてみました:

//mnt//shared//androidShared//test.txt" 

しかし、エラーは同じです。

ファイルを作成できないのはなぜですか?ファイルをあらかじめ作成しておいても、同じエラーが発生します。この行が実行されたとき

例外がスローされます。

FileOutputStream outputStream = new FileOutputStream (new File("/mnt/shared/androidShared/test.txt")); 

私は成功せず、同様にそれらのアプローチを試してみました:http://paste.ubuntu.com/25364833/

は、どのように私は、このフォルダ内のファイルを作成することができますか?

ありがとうございます!

+0

"私は共有フォルダにファイルを作成しようとしています(Androidを実行するエミュレータとUbunutを実行するホストシステムの間):/ mnt/shared/androidShared" - どのように共有フォルダを作成しようとしていますか?私はこれが利用可能なオプションであることに気づいていません。 – CommonsWare

+0

@CommonsWare私はフォルダではなく共有ファイルを意味しました。 – LandonZeKepitelOfGreytBritn

+0

OK、どうやって共有ファイルを作成しようとしていますか?私はこれが利用可能なオプションであることに気づいていません。 – CommonsWare

答えて

0

私は何をしたいのポータブル組込み機器

にこのすべてを実行していますが、おそらく根ざしデバイス上またはカスタムファームウェアを除き、可能ではありません。 AndroidはSFTP、SMB/CIFS、または他のファイルシステムレベルの共有ファイルソリューションを直接サポートしていません。

これをサポートするようにデバイスを変更しても、デバイスはSFTP、SMB/CIFS、またはその他のファイルサーバーにアクセスする必要があります。

質問は、デバイスではなくエミュレータであるGenymotionのドキュメントにリンクしています。

代わりに、ファイルサーバーの代わりにアプリサーバー(Webサービスなど)を実行し、そのデバイスのアプリケーションコードからアクセスすることもできます。これは、デバイスのファームウェアに根ざしたり変更したりする必要はありません。

+0

非常に奇妙なことに、実行時に私のホストから/ mnt/shared/androidSharedにiflesを追加し、私のVMの中からそれらにアクセスすることは可能です。私はファイルを読むことができるので、これはうまくいくはずです。純粋にフォルダ内にファイルを作成していますが、SFTPなどのような「複雑な」プロトコルはないと思います。 – LandonZeKepitelOfGreytBritn

+0

@LandonZeKepitelOfGreytBritn:Genymotionが直接Ubuntuの上で実行されているエミュレータのためのいくつかの機能を提供していますからといって、同じ機能は、任意のAndroidのハードウェアやネットワークの伴わない、いくつかの手段で何とか使用可能であることを意味するものではありません。 – CommonsWare

+0

間違ってはいけないあなたの説明などを拒否しているわけではありません。私は何を見ているのか、それから推測することを説明しています。私はあなたのために私を修正し、私が間違っていることを証明するために開いています。それは技術的な問題に立ち往生しています。 TCP/IPが唯一の簡単な方法だとすれば、よく調べてみます。 – LandonZeKepitelOfGreytBritn

関連する問題