我在我的应用程序中创建图像,并希望共享这些社交网络(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一起工作,但是我让自己问自己是否有更好的方法来分享没有黑客的图像,我忽略了一些东西.所以,对于问题:
每次我想交换两个值时我都要使用临时来做实际的交换.为什么Java不在任何类中为我们提供设施方法来简单地交换两个变量的值?
我有一个问题,在重构尝试中我将文件从一个地方复制到另一个地方并将它们添加到我的scm(perforce)中.当我完成并且一切正常后,我删除了旧的(移动的)文件.
我可以将文件历史记录相互连接吗?最好的方法是将"移动"视为应该完成的事情.
感谢任何帮助!
我已经建立了一个GPS跟踪器,用它的位置(和网络摄像头图像)更新主页.
如何更新Google纬度用户的当前位置?一个简单的bash脚本调用curl或c程序会很好!
更新:我还需要知道如何进行身份验证.
我最近开始使用 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) 我正在编写一个测试用例,我需要有意义地比较两个没有实现的对象equals.我不想为这些对象编写equals或hashcode方法.
有没有可以为我做这个的API?
你能否解释一下这种方法传递给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) 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上看到这一点
我真的很困惑:我只是想把每个对象的名字添加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 - 这就是我复制名称的方式.这可不是这样做的吗?
假设一个类中有一个静态块
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)
什么是块的生命周期,何时实例化,程序启动时或者我们创建类的第一个对象时