2012-02-16 22 views
0

openFileOutputからNullPointerExceptionが発生します。 context.getPackageName()= android、このコードはフレームワークです。 私はこの問題、文脈または何かを知らない... 誰も私を助けることができますか?連絡先アプリにopenFileOutput Androidでは、NullPointerException

-use

2月16日02:06:42.449:I/VCardImport(2255):vCardのキャッシュスレッドが実行を開始します。

2月16日02:06:42.449:E/VCardImport(2255):ファイル名:import_tmp_0.vcf

2月16日02:06:42.449:E/VCardImport(2255):ファイル:/データ/データ/ com.android.contacts /ファイル/ import_tmp_0.vcf

-Myソース、フレームワーク

2月16日01:11:00.525:E/PstContactCreator(549):ファイル名:

import_tmp_0.vcf

02-16 01:11:00.525:W/ApplicationContext(549):ファイルディレクトリファイルを作成できません

2月16日01:11:00.525:E/PstContactCreator(549):ファイル:私はgetFileStreamPath、openFileOutputある関数を使用する場合

私の元のコンテキストimport_tmp_0.vcfは、 'アンドロイド' で、私は、ファイルを作成することはできません。私は文脈が問題を引き起こすと思う。私は問題の原因と問題の解決方法を知りたい。 context.getFileStreamPath(filename); context.openFileOutput(filename、Context.MODE_PRIVATE).getChannel(); 11:00.455:I/PstManagerService(549):

プライベートウリのcopyTo(最終ウリsourceUri、文字列のファイル名)にIOException {

Log.i(LOG_TAG, String.format("Copy a Uri to app local storage (%s -> %s)", 
      sourceUri, filename)); 
    final Context context = mContext.get(); 
    final ContentResolver resolver = context.getContentResolver(); 
    ReadableByteChannel inputChannel = null; 
    WritableByteChannel outputChannel = null; 
    Uri destUri = null; 
    try { 
     inputChannel = Channels.newChannel(resolver.openInputStream(sourceUri)); 
     destUri = Uri.parse(context.getFileStreamPath(filename).toURI().toString()); 
     outputChannel = context.**openFileOutput**(filename, Context.MODE_PRIVATE).getChannel(); 

     final ByteBuffer buffer = ByteBuffer.allocateDirect(8192); 

     while (inputChannel.read(buffer) != -1) { 
      buffer.flip(); 
      outputChannel.write(buffer); 
      buffer.compact(); 
     } 

     buffer.flip(); 

     while (buffer.hasRemaining()) { 
      outputChannel.write(buffer); 
     } 

    } finally { 
     if (inputChannel != null) { 
      try { 
       inputChannel.close(); 
      } catch (IOException e) { 
       Log.w(LOG_TAG, "Failed to close inputChannel."); 
      } 
     } 
     if (outputChannel != null) { 
      try { 
       outputChannel.close(); 
      } catch(IOException e) { 
       Log.w(LOG_TAG, "Failed to close outputChannel"); 
      } 
     } 
    } 
    return destUri; 
} 

02から16 01をスロー

02から16を起動onsetrecordcmd 01:11:00.455:I/PstManagerService(549):f.exists

2月16日01:11:00.455:I/PstManagerService(549):11:00.465 creteNewFile

2月16日01の後:W/PstContactクリエイター(549):pst contact start!

2月16日01:11:00.465:E/PstContactCreator(549):ファイル名:import_tmp_0.vcf

2月16日01:11:00.465:ApplicationContextの/ W(549):できないファイルを作成するディレクトリファイル

2月16日01:11:00.475:E/PstContactCreator(549):ファイル:import_tmp_0.vcf

2月16日01:11:00.475:私は/ PstContactCreatorは、(549):にウリをコピーしますアプリローカルストレージ (ファイル:///cache/pst_contact_r.tmp - > import_tmp_0.vcf)

2月16日01:11:00.475:I/PstContactCreator(549):11:00.475:111

02から16 01 dcshin E/PstContactCreator(549):inputChannel: java.nio.channels.Channels $ InputStreamChannel @ 419ca7a8

02-16 01:11:00475:I/PstContactCreator(549):11:00.485:222

2月16日01 dcshinのApplicationContext/W(549):ファイルディレクトリファイルを作成できません

2月16日01:11:00.495: E/PstContactCreator(549):destUri:ファイル:

02から16 01 /import_tmp_0.vcf:11:00.495:I/PstContactCreator(549):333

02から16 01 dcshin:11:00.495: E/PstContactCreator(549):getPackageName:android

02-16 01:11:00.495:E/PstContactCreator(549):getPackag eCodePath:ヌル

2月16日01:11:00.505:E/PstContactCreator(549):getPackageResourcePath:ヌル

2月16日01:11:00.505:W/ApplicationContextの(549):ファイルを作成できません。ディレクトリファイル

2月16日01:11:00.505:E/PstContactCreator(549):java.lang.NullPointerExceptionが

2月16日01:11:00.505:I/PstContactCreator(549):完成キャッシュvCardを。

2月16日01:11:00.515:I/PstManagerService(549):11:00.515:

02から16 01を起動onsetrecordcmd I/PstManagerService(549):f.exists

02 -16 01:11:00.515:I/PstManagerService(549):after creteNewFile

02-16 01:11:00.525:W/PstContactCreator(549):pst contact start!

2月16日01:11:00.525:E/PstContactCreator(549):ファイル名:import_tmp_0.vcf

2月16日01:11:00.525:ApplicationContextの/ W(549):できないファイルを作成するディレクトリファイル

2月16日01:11:00.525:E/PstContactCreator(549):ファイル:import_tmp_0.vcf

2月16日01:11:00.525:私は/ PstContactCreatorは、(549):にウリをコピーしますアプリローカルストレージ (ファイル:///cache/pst_contact_r.tmp - > import_tmp_0.vcf)

2月16日01:11:00.525:I/PstContactCreator(549):11:00.525:111

02から16 01 dcshin E/PstContactCreator(549):inputChannel: java.nio.channels.Channels $ InputStreamChannel 419b0018

2月16日01 @:11:00.525:I/PstContactCreator(549):11:00.525:222

2月16日01 dcshin W/ApplicationContextの(549):できないファイルを作成するディレクトリファイル

2月16日01:11:00.525:E/ThermalDaemon(2916):最大CPU [1]周波数918000キロヘルツ

2月16日01:11:00.525:E/PstContactCreator(549):destUri:ファイル:11:

02から16 01 /import_tmp_0.vcf 00.525:I/PstContactCreator(549):333

dcshin

02-16 01:11:00。525:E/PstContactCreator(549):getPackageName:アンドロイド

2月16日01:11:00.525:E/PstContactCreator(549):getPackageCodePath:ヌル

2月16日01:11:00.525:E/PstContactCreator(549):getPackageResourcePath:ヌル

2月16日01:11:00.525:ApplicationContextの/ W(549):11:00.525:E/PstContactCreatorファイルディレクトリファイル

2月16日01を作成することができません。 (549):java.lang.NullPointerException

02-16 01:11:00.525:I/P stContactCreator(549):vCardのキャッシュが終了しました。

2月16日01:11:00.535:I/PstManagerService(549):11:00.535:

02から16 01を起動onsetrecordcmd I/PstManagerService(549):f.exists

02 -16 01:11:00.535:I/PstManagerService(549):after creteNewFile

02-16 01:11:00.535:W/PstContactCreator(549):pst contact start!

2月16日01:11:00.535:E/PstContactCreator(549):ファイル名:import_tmp_0.vcf

2月16日01:11:00.535:ApplicationContextの/ W(549):できないファイルを作成するディレクトリファイル

2月16日01:11:00.535:E/PstContactCreator(549):ファイル:import_tmp_0.vcf

2月16日01:11:00.535:私は/ PstContactCreatorは、(549):にウリをコピーしますアプリローカルストレージ (ファイル:///cache/pst_contact_r.tmp - > import_tmp_0.vcf)

2月16日01:11:00.535:I/PstContactCreator(549):11:00.535:111

02から16 01 dcshin E/PstContactCreator(549):inputChannel: java.nio.channels.Channels $ InputStreamChannel 414d6ca8

2月16日01 @:11:00.535:I/PstContactCreator(549):11:00.535:222

2月16日01 dcshin W/ApplicationContextの(549):できないファイルを作成するディレクトリファイル

2月16日01:11:00.545:E/PstContactCreator(549):destUri:ファイル:

/import_tmp_0.vcf

2月16日01:11:00.545:I/PstContactCreator(549):11:333

02から16 01 dcshin 00.545:E/PstContactCreator(549):getPackageName:アンドロイド

2月16日01:11:00.545:E/PstContactCreator(549):getPackageCodePath:ヌル

2月16日01:11:00.545:E/PstContactCreator(549):getPackageResourcePath:ヌル

2月16日1時11分: 00.545:W/ApplicationContext(549):ファイルディレクトリファイルを作成できません

02-16 01:11:00.545:E/PstContactCreator(549):java.lang。NullPointerException

02-16 01:11:00.545:I/PstContactCreator(549):vCardをキャッシュし終えました。

2月16日01:11:00.545:I/PstManagerService(549):11:00.545:

02から16 01を起動onsetrecordcmd I/PstManagerService(549):f.exists

02 -16 01:11:00.555:I/PstManagerService(549):after creteNewFile

02-16 01:11:00.555:W/PstContactCreator(549):pst contact start!

2月16日01:11:00.555:E/PstContactCreator(549):ファイル名:import_tmp_0.vcf

2月16日01:11:00.555:ApplicationContextの/ W(549):できないファイルを作成するディレクトリファイル

2月16日01:11:00.555:E/PstContactCreator(549):ファイル:import_tmp_0.vcf

2月16日01:11:00.555:私は/ PstContactCreatorは、(549):にウリをコピーしますアプリローカルストレージ (ファイル:///cache/pst_contact_r.tmp - > import_tmp_0.vcf)

2月16日01:11:00.555:I/PstContactCreator(549):11:00.555:111

02から16 01 dcshin E/PstContactCreator(549):inputChannel: java.nio.channels.Channels $ InputStreamChannel 41a20ff8

2月16日01 @:11:00.555:I/PstContactCreator(549):11:00.555:222

2月16日01 dcshin W/ApplicationContextの(549):できないファイルを作成するディレクトリファイル

2月16日01:11:00.555:E/PstContactCreator(549):destUri:ファイル:

/import_tmp_0.vcf

2月16日01:11:00.555:I/PstContactCreator(549):11:333

02から16 01 dcshin 00.555:E/PstContactCreator(549):getPackageName:アンドロイド

2月16日01:11:00.555:E/PstContactCreator(549):getPackageCodePath:ヌル

2月16日01:11:00.555:E/PstContactCreator(549):getPackageResourcePath:ヌル

2月16日1時11分: 00.555:W/ApplicationContext(549):ファイルディレクトリファイルを作成できません

02-16 01:11:00.555:E/PstContactCreator(549):java.lang.NullPointerException

02-16 01:11:00.555:I/PstContactCreator(549):vCardのキャッシュが終了しました。

2月16日01:11:00.565:I/DiagJNIInterface(1791):11:00.565:メッセージ

02から16 01を送信するように行くD/ShutdownThread(549):シャットダウン を開始する通知スレッドlongPressBehavior = 1 02-16 01:11:00.615:I/ShutdownThread(549):シャットダウンブロードキャストを送信中...

答えて

0

最初にアンドロイドマニフェストファイルをチェックしてください。権限でWRITE_EXTERNAL:記憶装置 を追加するか、連絡先を書き込む権限を与えてください。私はあなたに対処しているのを見た

+0

私のソースは。context.getPackageName()=アンドロイド。フレームワークフレームワークであり、許可が必要なのでしょうか? – user1212704

+0

いいえ、私はあなたの新しいcatlogを投稿して、まだそこには何らかのエラーが残っていると思われます。 –

+0

投稿するにはログインする必要がありますLogcatが追加されました – user1212704

0

あなたのアプリのパッケージ名はandroidですか?それは間違っている。それをcom.yournameのように変更してください。

0

同様の問題(NullPointerExceptionがopenFileOutputから来ているように見える)がありました。ここでは、最初にコンテキストを渡さずにJavaクラスを作成しました。

getApplicationContext().openFileOutput(FILENAME, Context.MODE_PRIVATE); 

私は以下に変更したので、うまくいきませんでした。 (ctx.openFileOutputに注意してください。

public ClassName(Context ctx){ 
    FileOutputStream fos; 
    try { 
     fos = ctx.openFileOutput(FILENAME, Context.MODE_PRIVATE); 
     fos.write(("Date created: " + SimpleDateFormat.getDateInstance().format(now) + "\n").getBytes()); 
     fos.close(); 
    } 
    catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

これはあなたの問題に対処ないかもしれないが、それは他の人を助け場合、私はそれをここに入れます。

関連する問題