2017-12-27 4 views
0

私は生のフォルダからいくつかのオーディオを別のアプリケーション(whatsapp、gmailなど)に共有しようとしています。ボタンを使って、それをクリックすると音声が鳴ります。押さえ続けると、共有するオプションが必要になります。私がインターネット上で見たように、ファイルを共有する方法はインテントを作成していますが、押さえたままの方法で作成すると、getPackageNameにエラーが発生します。どうすればこの問題を解決できますか?ここに私のコードの一部:this.getPackageName()長いクリックで音を共有する方法は?

final MediaPlayer sound1 = MediaPlayer.create(this, R.raw.cristobalmasgrande); 
Button button1 =(Button) this.findViewById(R.id.button1); 

button1.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     sound1.start(); 
    } 
}); 

button1.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     Intent compartirAudio = new Intent(android.content.Intent.ACTION_SEND); 
     compartirAudio.setType("audio/*"); 
     compartirAudio.putExtra(Intent.EXTRA_STREAM, 
       Uri.parse("android.resource://" + this.getPackageName() + "/raw/" + araujomio)); //Error on getPackageName() 
     startActivity(Intent.createChooser(compartirAudio, "Compartir vía")); 
     return false; 
    } 
}); 

答えて

3

thisOnLongClickListenerインスタンスです。それにはgetPackage()というメソッドはありません。 あなたが例えば、いくつかのオプションがあります。感謝ウドの

Uri.parse("android.resource://" + v.getContext().getPackageName() + "/raw/" + araujomio)); 

または

Uri.parse("android.resource://" + getApplicationContext.getPackageName() + "/raw/" + araujomio)); 
+0

ロットを、それが動作します。 – 9pablo7