Ich habe versucht, eine Hintergrund-App zu machen. Wenn wir auf ein bestimmtes Bild aus der Galerie klicken, öffnet sich eine neue Aktivität wie unten, wo das Bild in voller Größe angezeigt wird und es eine Schaltfläche gibt, um es als Hintergrundbild festzulegen. Ich verwende Glide-Bibliothek, um die Bilder von der URL zu laden. Bitte sagen Sie mir, wie Sie es als Hintergrundbild von der URL einrichten, während die App das Bild in voller Größe lädt, aber jedes Mal abstürzt, wenn ich auf die Schaltfläche klicke. Vielleicht ist es ein Problem mit dem Laden von Ether aus der URL oder mit der Einstellung als Hintergrundbild.Wallpaper app crashing beim Klicken auf Set-Taste
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main2Activity extends AppCompatActivity {
ImageView img;
private Bitmap theBitmap;
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Context c= getApplicationContext();
setContentView(R.layout.activity_main2);
b= (Button) findViewById(R.id.button);
Intent i=getIntent();
final String url=i.getStringExtra("picture");
img= (ImageView) findViewById(R.id.imageView4);
Glide.with(this).load(url).fitCenter() .into(img);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
theBitmap=getBitmapFromURL(url);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext());
try {
wallpaperManager.setBitmap(theBitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public static Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
ich die Erlaubnis, in AndroidManifest als
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
Dieser gesetzt haben, ist der Fehler, die ich auf die Taste 'als Hintergrundbild' Taste erhalten: -
07-20 09:33:43.127 3024-3024/com.android.backgroundchooser E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.backgroundchooser, PID: 3024
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
at com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:755)
at com.android.okhttp.okio.Okio$1.write(Okio.java:76)
at com.android.okhttp.okio.AsyncTimeout$1.write(AsyncTimeout.java:155)
at com.android.okhttp.okio.RealBufferedSink.flush(RealBufferedSink.java:221)
at com.android.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:141)
at com.android.okhttp.internal.http.HttpTransport.finishRequest(HttpTransport.java:52)
at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:902)
at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:788)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:443)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at com.android.backgroundchooser.Main2Activity.getBitmapFromURL(Main2Activity.java:60)
at com.android.backgroundchooser.Main2Activity$1.onClick(Main2Activity.java:42)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21156)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Bitte beachten Sie auch, wenn jemand könnte vorschlagen, wenn es ein Problem mit der Erlaubnis ist, da ich ein Marshmallow-Gerät verwende.
Vielen Dank im Voraus.
Bitte senden Sie das Stacktrace –
Protokolle benötigen Spuren des Fehlers zu erhalten, können u veröffentlichen die Protokolle –
Ja, ich habe das Protokoll der Post hinzufügen. Bitte prüfe. Vielen Dank :) –