小编dac*_*cwe的帖子

分享图像的正确方法(使用Intents)

我在我的应用程序中创建图像,并希望共享这些社交网络(Facebook),邮件应用程序(Gmail)和其他可以"接收"图像的应用程序.

问题的根源(我认为)是我不想使用外部存储作为我的图像的基础.我想要使​​用我的数据文件夹或我的缓存文件夹,因为这些都不需要任何访问权限.

我用来将我的图像写入文件的代码(我指定了MODE_WORLD_READABLE以便其他应用程序可以读取它们):

FileOutputStream fos = null;
try {
    fos = context.openFileOutput("image.jpg", Context.MODE_WORLD_READABLE);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} finally {
    if (fos != null)
        fos.close();
}
Run Code Online (Sandbox Code Playgroud)

这是我分享图像的代码:

File internalFile = context.getFileStreamPath("image.jpg");

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(internalFile));
intent.setType("image/jpeg");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

context.startActivity(Intent.createChooser(intent, "share"));
Run Code Online (Sandbox Code Playgroud)

这个解决方案非常简单,适用于像facebook这样的应用程序,但不适用于例如gmail的应用程序:

file:// attachment paths must point to file:///mnt/sdcard
Run Code Online (Sandbox Code Playgroud)

有一些"黑客"(见下文)让它与gmail一起工作,但是我让自己问自己是否有更好的方法来分享没有黑客的图像,我忽略了一些东西.所以,对于问题:

  • 分享图片的最佳方式是什么?(外部存储?)
  • 还有更多的应用程序(错误)表现得像gmail一样吗?(我在google +上看到了一些问题)
  • 如果没有其他方法:我可以编写特殊意图来共享特定应用程序.当用户在我的观察列表中选择应用时,我有一种默认的共享方式并覆盖它?

黑客

  1. 通过简单地指向Uri:使用路径攻击:

    文件:/// MNT/SD卡/../../我/包/名/ ...

    这种解决方案感觉不对.

  2. 使用ContentProvider这里描述的.但引用链接:

    警告:帖子中描述的方法适用于Gmail,但显然与其他ACTION_SEND处理程序(例如MMS编辑器)存在一些问题.

    (问题:它崩溃了MMS编辑器)

android share image android-intent

5
推荐指数
0
解决办法
765
查看次数

为什么Java不提供简单的交换功能?

每次我想交换两个值时我都要使用临时来做实际的交换.为什么Java不在任何类中为我们提供设施方法来简单地交换两个变量的值?

java swap pass-by-reference pass-by-value

4
推荐指数
1
解决办法
2889
查看次数

perforce连接两个不同文件的历史记录

我有一个问题,在重构尝试中我将文件从一个地方复制到另一个地方并将它们添加到我的scm(perforce)中.当我完成并且一切正常后,我删除了旧的(移动的)文件.

我可以将文件历史记录相互连接吗?最好的方法是将"移动"视为应该完成的事情.

感谢任何帮助!

version-control perforce

3
推荐指数
1
解决办法
875
查看次数

更新谷歌纬度

我已经建立了一个GPS跟踪器,用它的位置(和网络摄像头图像)更新主页.

如何更新Google纬度用户的当前位置?一个简单的bash脚本调用curl或c程序会很好!

更新:我还需要知道如何进行身份验证.

linux bash curl google-latitude

3
推荐指数
1
解决办法
3228
查看次数

ANTLR,表达式语法有问题

我最近开始使用 ANTLR。我目前正试图编码与表达语法+-*array[index]和几个结构。

这是所需的语法:

Exp -> Exp (+ | - | * | < | &&) Exp
     | Exp [ Exp ]
     | -Exp
     | ( Exp )
     | Exp.length
     | true
     | false
     | Id
     | this
     | ! Exp
Run Code Online (Sandbox Code Playgroud)

我首先将其重构为AndExp, SumExp,ProdExp等以解决优先级问题。大致是这样的:

Exp        -> AndExp
AndExp     -> CmpExp (&& CmpExp)*
CmpExp     -> SumExp (< SumExp)*
SumExp     -> ProdExp ((+|-) ProdExp)*
ProdExp    -> UnaryExp (Times UnaryExp)*
UnaryExp   -> …
Run Code Online (Sandbox Code Playgroud)

java parsing antlr

2
推荐指数
1
解决办法
1384
查看次数

如何在两个没有实现equals方法的对象之间进行有意义的比较?

我正在编写一个测试用例,我需要有意义地比较两个没有实现的对象equals.我不想为这些对象编写equalshashcode方法.

有没有可以为我做这个的API?

java equals

2
推荐指数
1
解决办法
359
查看次数

使用方法传递参数.Java的

你能否解释一下这种方法传递给addActionListener方法的方法是什么?我知道JButton创建了一个类型的按钮变量并定义了事件监听器.我不太清楚这个addActionListener论点,即其中的actionPerformed方法定义.我可以在哪里准备这种方法?谢谢.

JButton button = new JButton("New button");
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        System.out.println("Hello");
    }
});
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
1
解决办法
461
查看次数

可以处理错误吗?

public class StackTest {
    public static void main(String[] args) {
        show();
        System.out.print("welcome back to maain");
        display();
    }
    static void show(){
        try{
            show();    //recursion
        }catch(StackOverflowError e){
            System.out.print("error cought");
        }
    }
    static void display(){
        System.out.print("after stack overflow error");
    }
}
Run Code Online (Sandbox Code Playgroud)

在此程序中,发生StackOverflowError但会被处理,程序不会异常终止.为什么?您可以在http://ideone.com/vwSav上看到这一点

java

0
推荐指数
1
解决办法
119
查看次数

这是一个nullpointerexception?

我真的很困惑:我只是想把每个对象的名字添加ArrayList到另一个对象中ArrayList.

for (int i = 0; i < availableParts.size(); i++) {
    for (int j = 0; j < namesOfIngredients.size(); j++){
         if (availableParts.get(i).getName() != namesOfParts.get(j)){
             namesOfParts.add(availableParts.get(i).getName());
         }
    }//middle if statement makes sure there are no repeats
}
Run Code Online (Sandbox Code Playgroud)

编辑:我意识到namesOfIngredients为null.但是,我需要它来启动null - 这就是我复制名称的方式.这可不是这样做的吗?

java arraylist

0
推荐指数
1
解决办法
118
查看次数

何时在Java类中实例化静态块

假设一个类中有一个静态块

public class Menu {

    private static Map<String, String> buttonEventMap = new HashMap<String, String>();

    static {
        buttonEventMap.put("show-user","show");
        buttonEventMap.put("delete-user","delete");
    }

    public static Map<String, String> getHashMap() // To get the hash map
}
Run Code Online (Sandbox Code Playgroud)

什么是块的生命周期,何时实例化,程序启动时或者我们创建类的第一个对象时

java static static-block

0
推荐指数
1
解决办法
503
查看次数