通过Android应用程序分享图像使用ACTION_SEND不工作 [英] Share Image via android app using ACTION_SEND not working

查看:159
本文介绍了通过Android应用程序分享图像使用ACTION_SEND不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



Android - 在Facebook,Twitter,邮件,ecc上分享



但是我无法在android中使用action_send意图分享图片。请看我的代码,指导我错了。

  saveFileName =; 
Intent share = new Intent(Intent.ACTION_SEND);
share.setType(image / *);
位图shareImage = null;
shareImage = Bitmap.createBitmap(pc.getDrawingCache());
OutputStream OS = null;
文件f1 =新文件(Environment.getExternalStorageDirectory()
+/ Free Hand);
if(f1.isDirectory()== false)
new File(Environment.getExternalStorageDirectory()
+/ Free Hand)mkdir();
SimpleDateFormat filename = new SimpleDateFormat(yyyyMMddHmmss);
java.util.Date today1 = new java.util.Date();
saveFileName = filename.format(new java.sql.Timestamp(today1
.getTime()))+.png;
if(saveFileName.length()== 0)
saveFileName =Free Hand;
file = new File(Environment.getExternalStorageDirectory()
+/ Free Hand,saveFileName);
try {
outStream = new FileOutputStream(file);
shareImage.compress(Bitmap.CompressFormat.PNG,100,outStream);

share.putExtra(android.content.Intent.ACTION_SEND,Uri.parse(Environment.getExternalStorageDirectory()
+/ Free Hand /+ saveFileName +png));
Toast.makeText(
getApplicationContext(),
保存在+ Environment.getExternalStorageDirectory()
+/ Free Hand+\\\
File:+ saveFileName
+.png,Toast.LENGTH_LONG).show();
Log.v(Before image,Before image);
startActivity(Intent.createChooser(share,Share Image));
Log.v(After image,After image);
outStream.flush();
outStream.close();
saveFileName =;
} catch(Exception e){
Toast.makeText(getApplicationContext(),
Exception:+ e.getMessage(),Toast.LENGTH_LONG)
.show() ;
}
save = false;

我得到的Logcat输出是:

  06-18 16:08:16.274:D / StatusBarPolicy(1378):[BRIGHTHY] 3.显示3G指标
06-18 16:08:17.791:W / ActivityManager (1378):启动超时已过期,放弃唤醒锁!
06-18 16:08:17.804:W / ActivityManager(1378):HistoryRecord的活动空闲超时{454dabf8 com.facebook.katana / .ComposerActivity}
06-18 16:08:18.004:D / LGE_data(1463):LGE_Fast_Dormancy)new_state(2)i =(0)lastPDPstate =(2)
06-18 16:08:18.124:W / ResponseProcessCookies(15476):无效的Cookie标题:Set-Cookie :datr = HgbfT5h8NEIMcQRt7EurBx16; expires = Wed,18-Jun-2014 10:42:38 GMT; path = /; domain = .facebook.com; httponly。无法解析过期属性:Wed
06-18 16:08:18.644:D / ACRA(15476):#checkAndSendReports - 完成
06-18 16:08:18.684:E / AndroidRuntime(15476) :FATAL EXCEPTION:main
06-18 16:08:18.684:E / AndroidRuntime(15476):java.lang.RuntimeException:无法启动活动ComponentInfo {com.facebook.katana / com.facebook.katana.ComposerActivity }:java.lang.NullPointerException
06-18 16:08:18.684:E / AndroidRuntime(15476):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
06-18 16 :08:18.684:E / AndroidRuntime(15476):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-18 16:08:18.684:E / AndroidRuntime(15476):在android。 app.ActivityThread.access $ 2300(ActivityThread.java:125)
06-18 16:08:18.684:E / AndroidRuntime(15476):android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)
06-18 16:08:18.684:E / AndroidRuntime(15476):android.os.Handler.dispatchMessage(Handler.java:99 )
06-18 16:08:18.684:E / AndroidRuntime(15476):android.os.Looper.loop(Looper.java:123)
06-18 16:08:18.684:E / AndroidRuntime(15476):在android.app.ActivityThread.main(ActivityThread.java:4627)
06-18 16:08:18.684:E / AndroidRuntime(15476):在java.lang.reflect.Method。 invokeNative(Native Method)
06-18 16:08:18.684:E / AndroidRuntime(15476):java.lang.reflect.Method.invoke(Method.java:521)
06-18 16 :08:18.684:E / AndroidRuntime(15476):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
06-18 16:08:18.684:E / AndroidRuntime( 15476):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-18 16:08:18.684:E / AndroidRuntime(15476):在dalvik.system.NativeStart.main (Native Method)
06-18 16:08:18.684:E / AndroidRuntime(15476):引起的:java.lang.NullPointerException
06-18 16:08:18.684:E / AndroidRuntime ):at com.facebook.katana.activity.media.Storage.a(Storage.java:140)
06- 18 16:08:18.684:E / AndroidRuntime(15476):com.facebook.katana.ComposerActivity.a(ComposerActivity.java:742)
06-18 16:08:18.684:E / AndroidRuntime(15476) :at com.facebook.orca.activity.FbFragmentActivity.onCreate(FbFragmentActivity.java:48)
06-18 16:08:18.684:E / AndroidRuntime(15476):在android.app.Instrumentation.callActivityOnCreate(Instrumentation .java:1047)
06-18 16:08:18.684:E / AndroidRuntime(15476):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-18 16:08 :18.684:E / AndroidRuntime(15476):... 11更多
06-18 16:08:18.714:W / ActivityManager(1378):强制整理活动com.facebook.katana / .ComposerActivity
06-18 16:08:19.214:W / ActivityManager(1378):HistoryRecord {454dabf8 com.facebook.katana / .ComposerActivity}的活动暂停超时
06-18 16:08:19.574:W / Flex(1378 ):getString FLEX_COUNTRY_CODE COM
06-18 16:08:19.574:W / Flex(1378):getString FLEX_OPERATOR_CODE OPEN
06-18 16:08:19.5 74:W / Flex(1378):getString FLEX_OPERATOR_CODE OPEN
06-18 16:08:19.574:W / Flex(1378):getString FLEX_COUNTRY_CODE COM
06-18 16:08:19.574: Flex(1378):getString FLEX_OPERATOR_CODE OPEN
06-18 16:08:19.574:D / StatusBarPolicy(1378):[BRIGHTHY] 0. mDataNetType:8
06-18 16:08:19.574:D / StatusBarPolicy(1378):[BRIGHTHY] curNetwork = 40420 curHPLMN = 40420

我正在测试它设备通过USB调试。

解决方案

只需使用以下代码片段:

  try {
File myFile = new File(/ mnt / sdcard / images / 2.png);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String ext = myFile.getName()。substring(myFile.getName()。lastIndexOf(。)+ 1);
String type = mime.getMimeTypeFromExtension(ext);
Intent sharingIntent = new Intent(android.intent.action.SEND);
sharingIntent.setType(type);
sharingIntent.putExtra(android.intent.extra.STREAM,Uri.fromFile(myFile));
startActivity(Intent.createChooser(sharingIntent,分享使用));
}
catch(异常e){
Toast.makeText(getBaseContext(),e.​​getMessage(),Toast.LENGTH_SHORT).show();
}


I have bee following this

Android - Share on Facebook, Twitter, Mail, ecc

But I am unable to share image using action_send intent in android.Please see my code and guide me where I am wrong.

saveFileName = "";
            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("image/*");
            Bitmap shareImage = null;
            shareImage = Bitmap.createBitmap(pc.getDrawingCache());
            OutputStream OS = null;
            File f1 = new File(Environment.getExternalStorageDirectory()
                    + "/Free Hand");
            if (f1.isDirectory() == false)
                new File(Environment.getExternalStorageDirectory()
                        + "/Free Hand").mkdir();
            SimpleDateFormat filename = new SimpleDateFormat("yyyyMMddHmmss");
            java.util.Date today1 = new java.util.Date();
            saveFileName = filename.format(new java.sql.Timestamp(today1
                    .getTime())) +  ".png";
            if (saveFileName.length() == 0)
                saveFileName = "Free Hand";
            file = new File(Environment.getExternalStorageDirectory()
                    + "/Free Hand", saveFileName);
            try {
                outStream = new FileOutputStream(file);
                shareImage.compress(Bitmap.CompressFormat.PNG, 100, outStream);

                share.putExtra(android.content.Intent.ACTION_SEND, Uri.parse(Environment.getExternalStorageDirectory()
                        + "/Free Hand/"+saveFileName+".png"));
                Toast.makeText(
                        getApplicationContext(),
                        "Saved in " + Environment.getExternalStorageDirectory()
                                + "/Free Hand" + "\nFile: " + saveFileName
                                + ".png", Toast.LENGTH_LONG).show();
                Log.v("Before image", "Before image");
                startActivity(Intent.createChooser(share, "Share Image"));
                Log.v("After image", "After image");
                outStream.flush();
                outStream.close();
                saveFileName = "";
            } catch (Exception e) {
                Toast.makeText(getApplicationContext(),
                        "Exception : " + e.getMessage(), Toast.LENGTH_LONG)
                        .show();
            }
            save = false;

The Logcat output I get is :

06-18 16:08:16.274: D/StatusBarPolicy(1378): [BRIGHTHY] 3. Show 3G indicator
06-18 16:08:17.791: W/ActivityManager(1378): Launch timeout has expired, giving up wake lock!
06-18 16:08:17.804: W/ActivityManager(1378): Activity idle timeout for HistoryRecord{454dabf8 com.facebook.katana/.ComposerActivity}
06-18 16:08:18.004: D/LGE_data(1463): LGE_Fast_Dormancy) new_state(2) i=(0) lastPDPstate=(2)
06-18 16:08:18.124: W/ResponseProcessCookies(15476): Invalid cookie header: "Set-Cookie: datr=HgbfT5h8NEIMcQRt7EurBx16; expires=Wed, 18-Jun-2014 10:42:38 GMT; path=/; domain=.facebook.com; httponly". Unable to parse expires attribute: Wed
06-18 16:08:18.644: D/ACRA(15476): #checkAndSendReports - finish
06-18 16:08:18.684: E/AndroidRuntime(15476): FATAL EXCEPTION: main
06-18 16:08:18.684: E/AndroidRuntime(15476): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.facebook.katana/com.facebook.katana.ComposerActivity}: java.lang.NullPointerException
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.os.Looper.loop(Looper.java:123)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.app.ActivityThread.main(ActivityThread.java:4627)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at java.lang.reflect.Method.invokeNative(Native Method)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at java.lang.reflect.Method.invoke(Method.java:521)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at dalvik.system.NativeStart.main(Native Method)
06-18 16:08:18.684: E/AndroidRuntime(15476): Caused by: java.lang.NullPointerException
06-18 16:08:18.684: E/AndroidRuntime(15476):    at com.facebook.katana.activity.media.Storage.a(Storage.java:140)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at com.facebook.katana.ComposerActivity.a(ComposerActivity.java:742)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at com.facebook.orca.activity.FbFragmentActivity.onCreate(FbFragmentActivity.java:48)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-18 16:08:18.684: E/AndroidRuntime(15476):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-18 16:08:18.684: E/AndroidRuntime(15476):    ... 11 more
06-18 16:08:18.714: W/ActivityManager(1378):   Force finishing activity com.facebook.katana/.ComposerActivity
06-18 16:08:19.214: W/ActivityManager(1378): Activity pause timeout for HistoryRecord{454dabf8 com.facebook.katana/.ComposerActivity}
06-18 16:08:19.574: W/Flex(1378): getString FLEX_COUNTRY_CODE COM
06-18 16:08:19.574: W/Flex(1378): getString FLEX_OPERATOR_CODE OPEN
06-18 16:08:19.574: W/Flex(1378): getString FLEX_OPERATOR_CODE OPEN
06-18 16:08:19.574: W/Flex(1378): getString FLEX_COUNTRY_CODE COM
06-18 16:08:19.574: W/Flex(1378): getString FLEX_OPERATOR_CODE OPEN
06-18 16:08:19.574: D/StatusBarPolicy(1378): [BRIGHTHY] 0. mDataNetType: 8
06-18 16:08:19.574: D/StatusBarPolicy(1378): [BRIGHTHY] curNetwork=40420 curHPLMN=40420

I am testing it on real device via USB debugging.

解决方案

Simply use following code snippet :

try {
    File myFile = new File("/mnt/sdcard/images/2.png");
    MimeTypeMap mime = MimeTypeMap.getSingleton();
    String ext=myFile.getName().substring(myFile.getName().lastIndexOf(".")+1);
    String type = mime.getMimeTypeFromExtension(ext);
    Intent sharingIntent = new Intent("android.intent.action.SEND");
    sharingIntent.setType(type);
    sharingIntent.putExtra("android.intent.extra.STREAM",Uri.fromFile(myFile));   
    startActivity(Intent.createChooser(sharingIntent,"Share using"));
}
catch(Exception e){
    Toast.makeText(getBaseContext(), e.getMessage(),Toast.LENGTH_SHORT).show();  
} 

这篇关于通过Android应用程序分享图像使用ACTION_SEND不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆