图片未显示在推送通知中

问题描述:

我是Android编程的新手,我试图设置一个带有大图片的推送通知以及文本和图标。但是,我收到了一个错误。我一直试图解决它现在几个小时,但不能。如果有人知道如何去做,请帮助我。图片未显示在推送通知中

NotificationCompat.Builder notification=new NotificationCompat.Builder(this); 
notification.setAutoCancel(true); 
notification.setContentTitle("This is a notification"); 
notification.setSmallIcon(R.mipmap.ic_launcher); 
notification.setContentText("This is a sample notification text"); 
notification.setWhen(System.currentTimeMillis()); 

//Bitmap remote_picture = null; ---> this is now my global variable. 
NotificationCompat.BigPictureStyle notiStyle = new NotificationCompat.BigPictureStyle(); 
notiStyle.setBigContentTitle("Big Picture Expanded"); 
notiStyle.setSummaryText("Nice big picture."); 
new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try 
      { 
       remote_picture = BitmapFactory.decodeStream((InputStream) new URL(getIntent().getExtras().getString("imageurl")).getContent()); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 
    notiStyle.bigPicture(remote_picture); 

notification.setStyle(notiStyle); 

Intent intent=new Intent(this,sample.class); 
intent.putExtra("temp",temp); 
PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,0); 
notification.setContentIntent(pendingIntent); 

NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    notificationManager.notify(id,notification.build()); 

这是在意图 “IMAGEURL” 字段中的URL: “http://omitra.in/demo/logo.png

这是我的错误:致

java.lang.IllegalStateException: Could not execute method for android:onClick 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275) 
at android.view.View.performClick(View.java:4446) 
at android.view.View$PerformClick.run(View.java:18437) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5372) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:970) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
at android.view.View.performClick(View.java:4446)  
at android.view.View$PerformClick.run(View.java:18437)  
at android.os.Handler.handleCallback(Handler.java:733)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:136)  
at android.app.ActivityThread.main(ActivityThread.java:5372)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:515)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:970)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786)  
at dalvik.system.NativeStart.main(Native Method)  
Caused by: android.os.NetworkOnMainThreadException 
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145) 
at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
at java.net.InetAddress.getAllByName(InetAddress.java:214) 
at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28) 
at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216) 
at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122) 
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292) 
at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255) 
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206) 
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345) 
at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89) 
at java.net.URLConnection.getContent(URLConnection.java:190) 
at java.net.URL.getContent(URL.java:455) 
at com.example.sachinparashar.omitravendorassistance.Verify.defineNotification(Verify.java:135) 
at com.example.sachinparashar.omitravendorassistance.Verify.onVerify(Verify.java:90) 
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:515)  
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)  
at android.view.View.performClick(View.java:4446)  
at android.view.View$PerformClick.run(View.java:18437)  
at android.os.Handler.handleCallback(Handler.java:733)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:136)  
at android.app.ActivityThread.main(ActivityThread.java:5372)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:515)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:970)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:786)  
at dalvik.system.NativeStart.main(Native Method)  
+0

的[android.os.NetworkOnMainThreadException]可能的复制(http://*.com/questions/6343166/android-os- networkonmainthreadexception) – Sufian

+0

在发布问题之前,请务必谷歌logcat错误。正如你可以看到这个问题已经在另一个SO问题中解决了。 – Sufian

:android.os .NetworkOnMainThreadException

这意味着你试图访问互联网在米ain线程。

remote_picture = BitmapFactory.decodeStream((InputStream) new URL(getIntent().getExtras().getString("imageurl")).getContent()); 

你可能需要把这个代码在一个线程

+0

我现在已经创建了一个新线程,通知也显示出来了。但它并没有显示出它的大影像。它只显示图标,标题和文本。我现在更新了我的代码。请检查错误在哪里。 –

+0

谢谢。它正在工作。 –