强制用户在android中选择一张照片

时间:2014-09-26 11:31:48

标签: android

在文件activity_mai.xml中的我的Android应用程序中,我ImageView默认设置了ic_launcher.png的值。

<ImageView
  android:id="@+id/viewImage"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_weight="0.05"
  android:contentDescription="@string/content"
  android:src="@drawable/ic_launcher" 
/>

我需要检查当执行图像文件上传时图像不是ic_launcher并强制用户选择一张图片或在他的智能手机中拍摄新照片。

我尝试过这种方法但没有成功,因为没有执行此检查。

My code below:

@Override
public void onClick(View arg0) {

    if (area.getSelectedItem().toString().trim()
            .equalsIgnoreCase("area")) {
        Toast.makeText(MainActivity.this, "area.",
                Toast.LENGTH_SHORT).show();
    } else if (messageText.getText().toString().length() <= 0) {            
        Toast.makeText(MainActivity.this, "message",
                Toast.LENGTH_SHORT).show();         

    } else if (arg0 == btnselectpic) {
        selectImage();
    } else if (arg0 == uploadButton) {

        if (imageview.toString().equals("ic_launcher.png")) {
            messageText.setError("image");
        } else {
            progress = ProgressDialog.show(MainActivity.this, "",
                    "Uploading file...", false, false);

            int secondsDelayed = 5;
            new Handler().postDelayed(new Runnable() {
                public void run() {
                    startActivity(new Intent(MainActivity.this,
                            MainActivity.class));
                    finish();
                }
            }, secondsDelayed * 1000);
        }

提前致谢

edit

        if (imageview.getDrawable() == getResources().getDrawable(
            R.drawable.ic_launcher)) {
        Toast.makeText(MainActivity.this, "image",
                Toast.LENGTH_SHORT).show();
    }

LogCat

09-26 14:11:10.530: 
D/MainActivity.class(9773): 
myDrawable 1 : android.graphics.drawable.BitmapDrawable@425dc490


09-26 14:11:10.530: D/MainActivity.class(9773): 
myDrawable 2 : android.graphics.drawable.BitmapDrawable@4326f0e0



        Log.d("MainActivity.class", "myDrawable 1 : " + imageview.getDrawable());
        Log.d("MainActivity.class", "myDrawable 2 : "
                + getResources().getDrawable(R.drawable.ic_launcher));

3 个答案:

答案 0 :(得分:0)

使用toString()无法在imageView中获取图像的文件名。这就是API中描述toString()的方法:

  • 返回一个字符串,其中包含此对象的简洁,可读的描述。

但这意味着不是文件名。如果您想从Image获取fileName,那么在将此图像设置为视图时,将文件名设置为标记是更好的解决方案:

   yourImageView.setTag(yourFileName);

为了给您提供更好的帮助,我们需要查看用户选择图像的位置以及将此图像设置到视图的位置。在这个地方,必须有名称设置为标记。

答案 1 :(得分:0)

试试这个

Drawable myDrawable = yourImageView.getDrawable();

您可以将其与可绘制资源(如

)进行比较
if(yourImageView.getDrawable()==getResources().getDrawable(R.drawable.ic_launcher)){
    messageText.setError("image");
}
else
{
    // complete your work       
}

答案 2 :(得分:0)

请尝试本教程,这里是如何比较Android(Java)中的2个Drawable对象:http://thoughtsoframy.blogspot.it/2013/08/comparing-drawables-in-android.html