6 Stimmen

Android Bild als Kontaktsymbol/Hintergrundbild festlegen

Ich habe meinen eigenen ImageViewer geschrieben und möchte nun Eingestellt als Funktionalität wie im nativen Android ImageViewer. Ich jetzt ist es möglich, da Facebook hat es. Ich habe einen Screenshot beigefügt, um mich mehr klar zu machen. enter image description here

P.S. Ich möchte genauer erklären, was schief läuft. Nachdem ich im Menü "Kontaktsymbol" gewählt habe, erscheint die Liste meiner Kontakte. Wenn ich einen Kontakt auswähle, wird die Anwendung zwangsweise geschlossen. Wenn ich "Start-/Sperrbildschirmhintergrund" wähle, wird die Galerie meines Telefons geöffnet. Hier ist mein Codeschnipsel:

                Bitmap icon = mBitmap;
                Intent setAs = new Intent(Intent.ACTION_ATTACH_DATA);
                setAs.setType("image/jpg");
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                File f = new File(Environment.getExternalStorageDirectory() + File.separator + "/my_tmp_file.jpg");
                try {
                    f.createNewFile();
                    FileOutputStream fo = new FileOutputStream(f);
                    fo.write(bytes.toByteArray());
                } catch (IOException e) {                       
                    e.printStackTrace();
                }
                setAs.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/my_tmp_file.jpg"));
                startActivity(Intent.createChooser(setAs, "Set Image As"));

Ich habe auch die entsprechenden Berechtigungen zu meinem Manifest hinzugefügt, und ich kann mein Bild auf die SD-Karte des Telefons schreiben.

LogCat Output

4voto

Martyn Punkte 16112

Desde el Quellcode der Google-Galerie-Anwendung :

// Called when "Set as" is clicked.
private static boolean onSetAsClicked(MenuInvoker onInvoke,
                                      final Activity activity) {
    onInvoke.run(new MenuCallback() {
        public void run(Uri u, IImage image) {
            if (u == null || image == null) {
                return;
            }

            Intent intent = Util.createSetAsIntent(image);
            activity.startActivity(Intent.createChooser(intent,
                    activity.getText(R.string.setImage)));
        }
    });
    return true;
}

Aus Utils.java

// Returns an intent which is used for "set as" menu items.
public static Intent createSetAsIntent(IImage image) {
    Uri u = image.fullSizeImageUri();
    Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
    intent.setDataAndType(u, image.getMimeType());
    intent.putExtra("mimeType", image.getMimeType());
    return intent;
}

3voto

Ronnie Punkte 24043

Schauen Sie sich den Code der Kontakte-App an. Es gibt eine AttachImage Aktivität, die zum Anhängen eines Bildes gestartet wird. Das Icon-Foto sollte 96x96 px groß sein. Die Website action...CROP übernimmt die Gesichtserkennung und das Zuschneiden des Bildes, das Sie übergeben.

Link : AttachImage.java

Sie sollten das Bild auf 96x96 skalieren und zuschneiden und seine URI an die insertPhoto Methode verwendet in AttachImage Aktivität.

Für das Ändern des Hintergrundbildes können Sie dies nachlesen Frage die Antwort.

アップデート

Code für den Start der Anbautätigkeit:

Intent intent = new Intent("com.android.camera.action.CROP", myIntent.getData());
if (myIntent.getStringExtra("mimeType") != null) {
   intent.setDataAndType(myIntent.getData(), myIntent.getStringExtra("mimeType"));
}
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
intent.putExtra("return-data", true);
startActivityForResult(intent, REQUEST_CROP_PHOTO);

1voto

Moog Punkte 10114

Sie können einfach Folgendes verwenden WallpaperManager um das Hintergrundbild einzustellen.

WallpaperManager.getInstance(this).setBitmap(mBitmap);

1voto

Mahdi Azadbar Punkte 1321

Diesen Code verwenden

File externalFile=new File("filePath");
Uri sendUri = Uri.fromFile(externalFile);
    Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
            intent.setDataAndType(sendUri, "image/jpg");
            intent.putExtra("mimeType", "image/jpg");
            startActivityForResult(Intent.createChooser(intent, "Set As"), 200);

0voto

Jay Kansagara Punkte 83

Für Bild als (Kontakt, Hintergrundbild, etc.) festlegen

        Intent setAs = new Intent(Intent.ACTION_ATTACH_DATA);
        setAs.setType("image/jpg");
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        File f = new File(Environment.getExternalStorageDirectory()
                + File.separator + "/my_tmp_file.jpg");
        try {
            f.createNewFile();
            FileOutputStream fo = new FileOutputStream(f);
            fo.write(bytes.toByteArray());
        } catch (IOException e) {
            e.printStackTrace();
        }

        setAs.setDataAndType(Uri.parse("file:///sdcard/my_tmp_file.jpg"),
                "image/jpg");
        setAs.putExtra("mimeType", "image/jpg");
        startActivity(Intent.createChooser(setAs, "Set Image As"));

Dies wird Ihr Problem lösen und das Bild als (Kontakt, Hintergrundbild, etc..) einstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X