我正在尝试向我的应用程序添加一个共享按钮,该按钮会截取屏幕截图,然后通过 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