I would like to be able launch a 2nd Preference screen from my PreferenceActivity. And in the 2nd Preference screen I\'d like to use a predefined layout from xml. So, I ha
You might want something similar to what I did to upload a photo from the gallery or camera.
package com.atClass.lmt;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.provider.MediaStore;
import android.util.Log;
public class Prefs extends PreferenceActivity{
//public static final int FLAG_ACTIVITY_CLEAR_TOP = 1;
private static final int MEDIA_IMAGE_REQUEST_CODE = 1;
private static final int CAMERA_IMAGE_REQUEST_CODE = 2;
public static Uri cImageUri;
public static Context cContext;
public static Activity cActivity;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
this.cContext = (Context)this;
this.cActivity = (Activity)this;
Preference customPref = (Preference) findPreference("user_display_picture");
customPref.setOnPreferenceClickListener(
new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
return imageUploadDialog();
}
});
}
protected void onStop(){
super.onStop();
MapTools.createMapView(false);
Lmt.serviceBinder.serviceThread("loginDevice");
}
public boolean imageUploadDialog(){
final CharSequence[] items = {"Take picture now","Upload from gallery"};
AlertDialog.Builder lAlertDialog = new AlertDialog.Builder(cContext);
lAlertDialog.setTitle("Upload action");
lAlertDialog.setCancelable(true);
lAlertDialog.setItems(items,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i){
//Toast.makeText(getApplicationContext(), "Selected item: " +i, Toast.LENGTH_SHORT).show();
if (i == 0){
attachCameraImage();
}
if (i == 1){
attachGalleryImage();
}
}
});
lAlertDialog.setIcon(R.drawable.click_to_url);
lAlertDialog.show();
return true;
}
public void attachGalleryImage(){
Intent getImageFromGalleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(getImageFromGalleryIntent, MEDIA_IMAGE_REQUEST_CODE);
}
public void attachCameraImage(){
String fileName = "testphoto.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
cImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, cImageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAMERA_IMAGE_REQUEST_CODE);
}
protected final void onActivityResult(final int requestCode, final int resultCode, final Intent i) {
Log.d(Global.TAG,"--> Received callback with:" + resultCode);
super.onActivityResult(requestCode, resultCode, i);
if(resultCode == RESULT_OK) {
Log.d(Global.TAG,"--> Result OK with:" + requestCode);
switch(requestCode) {
case MEDIA_IMAGE_REQUEST_CODE:
Log.d(Global.TAG,"--> MEDIA_IMAGE_REQUEST_CODE");
Gui.GuiProgressDialog.showLoadingSpinner(cActivity);
cImageUri = i.getData();
if (cImageUri == null){Log.d(Global.TAG,"--> ImageURI is null!");}
Lmt.serviceBinder.serviceThread("uploadMemberPicture");
break;
case CAMERA_IMAGE_REQUEST_CODE:
Log.d(Global.TAG,"--> CAMERA_IMAGE_REQUEST_CODE");
//cImageUri = i.getData();
if (cImageUri == null){Log.d(Global.TAG,"--> ImageURI is null!");}
Lmt.serviceBinder.serviceThread("uploadMemberPicture");
break;
}
}
}
}