画面のスクリーンショットを撮り、Facebookなどで共有する共有ボタンをアプリに追加しようとしています。インターネットで検索しました。Stack Overflow も検索しました。この問題に関連する多くのスレッドがありますが、私はまだそれを理解できませんでした. 私を混乱させているのは..すべての例で、画像のファイルパスがハードコードされています。私はそれが好きでしたが、役に立たず動的ではありません。私がやろうとしているのは、その瞬間のスクリーンショットを撮って共有することですが、自分でファイルパスを指定すると、その写真をフォルダーから取得して共有するだけです
public void clickButton(View v) {
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
//set the type
shareIntent.setType("image/png");
//add a subject
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
"CAR EXAMPLE");
//build the body of the message to be shared
String shareMessage = "An app...";
//add the message
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareMessage);
//add the img
shareIntent.putExtra(Intent.EXTRA_STREAM,
Uri.parse("/storage/sdcard0/Tutorial_ScreenShot/screenshot0.jpg"));
//start the chooser for sharing
startActivity(Intent.createChooser(shareIntent, "Share"));
}
画像の追加部分でわかるように、ファイルパスは自分で指定します。それで、より動的な動作を与える方法..ボタンをクリックすると、アプリの画面をフォルダーに保存する必要があり、ファイルパスをハードコーディングせずに共有できます。
編集済み:以下の解決策を試した後。
ええと、ありがとう。ボタンの onClick のすぐ下で shareIt() を呼び出すと、アプリケーションが停止します...これがログです。
12-28 15:53:01.660: E/AndroidRuntime(14120): FATAL EXCEPTION: main
12-28 15:53:01.660: E/AndroidRuntime(14120): Process: com.hede.namesurfer, PID: 14120
12-28 15:53:01.660: E/AndroidRuntime(14120): java.lang.NullPointerException
12-28 15:53:01.660: E/AndroidRuntime(14120): at
com.hede.namesurfer.MainActivity.share(MainActivity.java:161)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
com.hede.namesurfer.MainActivity$1.onClick(MainActivity.java:42)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
android.view.View.performClick(View.java:4438)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
android.view.View$PerformClick.run(View.java:18422)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
android.os.Handler.handleCallback(Handler.java:733)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
android.os.Handler.dispatchMessage(Handler.java:95)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
android.os.Looper.loop(Looper.java:136)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
android.app.ActivityThread.main(ActivityThread.java:5017)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
java.lang.reflect.Method.invokeNative(Native Method)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
java.lang.reflect.Method.invoke(Method.java:515)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-28 15:53:01.660: E/AndroidRuntime(14120): at
dalvik.system.NativeStart.main(Native Method)
12-28 15:53:02.780: I/Process(14120): Sending signal. PID