gpt4 book ai didi

android - 使用 Aquery 在 sdcar 中存储图像 - Android

转载 作者:行者123 更新时间:2023-11-30 01:34:10 26 4
gpt4 key购买 nike

我正在尝试将来自网络的图像存储到我的模拟器的 SD 卡中。但是,我更具体地得到一个空对象引用。

W/AQuery: reporting:java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
at testing.theo.androidqueryexample.MainActivity.handfile(MainActivity.java:69)
at testing.theo.androidqueryexample.MainActivity.access$000(MainActivity.java:19)
at testing.theo.androidqueryexample.MainActivity$1.callback(MainActivity.java:61)
at testing.theo.androidqueryexample.MainActivity$1.callback(MainActivity.java:56)
at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:506)
at com.androidquery.callback.AbstractAjaxCallback.afterWork(AbstractAjaxCallback.java:1299)
at com.androidquery.callback.AbstractAjaxCallback.run(AbstractAjaxCallback.java:998)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

我的代码如下所示。

public class MainActivity extends AppCompatActivity {

AQuery aq;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

aq = new AQuery(this);

/*Button b = (Button)findViewById(R.id.button);
b.setText("new text");
b.setBackgroundColor(Color.RED);
b.setEnabled(true);*/

aq.id(R.id.button).clicked(this, "clickhandle");
}

public void clickhandle(View view){

ProgressDialog pd = new ProgressDialog(this);
pd.setTitle("Loading Image");
pd.setMessage("Please wait...");
aq.id(R.id.button).text("aquery text").backgroundColor(Color.RED).
textColor(Color.YELLOW).enabled(true);
//aq.id(R.id.imageView).progress(pd).image("http://static.panoramio.com/photos/large/127854802.jpg",true,true,0,0,null,AQuery.FADE_IN);

File f = new File(Environment.getExternalStorageDirectory(),"myfiles/myimage.jpg");
if(!f.exists())

try {
f.mkdirs();
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
aq.download("http://static.panoramio.com/photos/large/127854802.jpg", f, new AjaxCallback<File>(){

@Override
public void callback(String url, File object, AjaxStatus status) {
super.callback(url, object, status);
handfile(object);
}
});


}

private void handfile(File object) {
Toast.makeText(this,"got file: " +object.getAbsolutePath().toString(),Toast.LENGTH_LONG).show();
}

}

第 69 行对应于 handlefile(...) 方法中的 Toast 消息。

有什么问题吗?

我在 list 文件中声明了 WRITE_EXTERNAL_STORAGE 和 INTERNT 权限。

谢谢。

最佳答案

我发现的问题是您在目录 myfiles 中创建文件 myimage.jpg 但该目录不存在。尝试在创建文件之前创建目录结构。

File f = new File f = new File(Environment.getExternalStorageDirectory(),"myfiles/myimage.jpg");

if(!f.exists())
try {
f.getParentFile().mkdirs(); //create missing parents
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}

希望对你有帮助

关于android - 使用 Aquery 在 sdcar 中存储图像 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com