1

携帯電話の壁紙を設定できるアプリケーションを作成したいのですが、次の問題がありますgetApplicationContext().setWallpaper(bm)
それsetWallpaperは非推奨であり、別の方法を使用する必要があると書かれていますが、どの方法を使用すればよいかわかりません。
これまでの私のコードは次のとおりです。

   package com.example.asus.incercare_proiect;

/**
 * Created by Asus on 29-Apr-15.
 */
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

 class bakapp extends Activity implements OnClickListener {
    ImageView display;
    int tophone;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        // activitatea noastra sa acopere intreg ecranul
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.backapp);
        Button but = (Button) findViewById(R.id.setwallpaper);
        tophone = R.drawable.image4;
        but.setOnClickListener(this);
        display = (ImageView) findViewById(R.id.ivdisplay);
        ImageView image1 = (ImageView) findViewById(R.id.IVimage1);
        ImageView image2 = (ImageView) findViewById(R.id.IVimage2);
        ImageView image3 = (ImageView) findViewById(R.id.IVimage3);
        ImageView image4 = (ImageView) findViewById(R.id.image4);
        ImageView image5 = (ImageView) findViewById(R.id.IVimage5);

        image1.setOnClickListener(this);
        image2.setOnClickListener(this);
        image3.setOnClickListener(this);
        image4.setOnClickListener(this);
        image5.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Toast var;
        switch (v.getId()) {
            case R.id.IVimage1:
                display.setImageResource(R.drawable.image4);
                var = Toast.makeText(bakapp.this, "image changed",
                        Toast.LENGTH_SHORT);

                var.show();

                tophone = R.drawable.image4;
                break;
            case R.id.IVimage2:
                display.setImageResource(R.drawable.image5);
                var = Toast.makeText(bakapp.this, "image changed",
                        Toast.LENGTH_SHORT);

                var.show();

                tophone = R.drawable.image5;
                break;
            case R.id.IVimage3:
                display.setImageResource(R.drawable.image6);
                var = Toast.makeText(bakapp.this, "image changed",
                        Toast.LENGTH_SHORT);

                var.show();

                tophone = R.drawable.image6;
                break;
            case R.id.image4:
                display.setImageResource(R.drawable.image7);
                var = Toast.makeText(bakapp.this, "image changed",
                        Toast.LENGTH_SHORT);

                var.show();

                tophone = R.drawable.image7;
                break;
            case R.id.IVimage5:
                display.setImageResource(R.drawable.image8);
                var = Toast.makeText(bakapp.this, "image changed",
                        Toast.LENGTH_SHORT);

                var.show();

                tophone = R.drawable.image8;
                break;
            case R.id.setwallpaper:
                // trebuie folosit bitmap
                InputStream is = getResources().openRawResource(tophone);

                Bitmap bm = BitmapFactory.decodeStream(is);

                try {
                    getApplicationContext().setWallpaper(bm);

                // trebuie sa cerem permisiune pentru a seta Wallpaperul

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
           var = Toast.makeText(bakapp.this, "Wallpaper image changed",
                        Toast.LENGTH_SHORT);

                var.show();

                break;
        }
    }

}

誰か助けてくれませんか?

4

2 に答える 2

3

公式ドキュメントを見ると、このメソッドは推奨されていないため、代わりにWallpaperManager.setBitmap()API 5を使用する必要があることがわかります。

于 2015-04-29T14:34:17.787 に答える
2

まず、Menifest ファイルにパーミッションを設定します

 <uses-permission android:name="android.permission.SET_WALLPAPER"/>

次に WallpaperManager を使用して壁紙を設定します。

WallpaperManager myWallpaperManager 
        = WallpaperManager.getInstance(getApplicationContext());
        try {
            myWallpaperManager.setResource(R.drawable.five);
于 2015-04-29T14:35:59.077 に答える