2015-04-29 5 views
1

Я хочу создать приложение, которое позволяет мне устанавливать обои моего телефона, но у меня проблема: getApplicationContext().setWallpaper(bm).
Он говорит, что setWallpaper устарел, и я должен использовать другой метод, но я не знаю, какой метод использовать.
Это мой код до сих пор:Android 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; 
     } 
    } 

} 

Может кто-нибудь помочь мне?

+0

Если вы посмотрите на документы android для 'Context' 'setWallpaper()' method, он сообщает вам, что вам нужно использовать. Что является 'WallpaperManager.set()' http://developer.android.com/reference/android/content/Context.html#setWallpaper(android.graphics.Bitmap) – Dreagen

+0

[this] (http://stackoverflow.com/ вопросы/15190170/what-do-it-mean-for-a-method-to-be-revrecated-and-how-can-i-resolve-result) Должен помочь вам – Strider

ответ

2

Сначала вы установите разрешение в вашем Menifest файле

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

, а затем использовать WallpaperManager, чтобы установить обои.

WallpaperManager myWallpaperManager 
     = WallpaperManager.getInstance(getApplicationContext()); 
     try { 
      myWallpaperManager.setResource(R.drawable.five); 
Смежные вопросы