Wai Yan Hein Wai Yan Hein - 2 months ago 16
Android Question

Viber share button throws exception in Android

I am developing and Android app. In my app, I am add Viber share feature. So I searched online "How to share a content with viber in android". Then I found Viber for business. So for share button, I followed this link, https://www.viber.com/en/viber-share-button. As you can see, it is so simple. It is just asking to redirect to browser with a url. So I open a browser with url to share on viber as follow.

private void shareOnViberClick()
{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("viber://forward?text=textIWantToShare"));
startActivity(browserIntent);
}


But when I click share button and call that method, it throws following error

09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: FATAL EXCEPTION: main
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=viber://forward?text=မန္ယူအသင္း၏ ပရိတ္သတ္ဟုထုတ္ေဖာ္ေျပာျပခဲ့သည့္ ေဒါ့မြန္လူငယ္ၾကယ္ပြင့္ }
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:3390)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:3351)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:842)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.app.Activity.startActivity(Activity.java:3587)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.app.Activity.startActivity(Activity.java:3555)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at tonightfootballreport.com.tfr.NewsDetailsActivity.shareOnViberClick(NewsDetailsActivity.java:364)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at tonightfootballreport.com.tfr.NewsDetailsActivity.access$200(NewsDetailsActivity.java:47)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at tonightfootballreport.com.tfr.NewsDetailsActivity$4.onClick(NewsDetailsActivity.java:134)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.view.View.performClick(View.java:4240)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:17721)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:730)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:92)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5103)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:525)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-07 05:33:02.357 11715-11715/tonightfootballreport.com.tfr E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
09-07 05:33:02.637 11715-11830/tonightfootballreport.com.tfr D/dalvikvm: GC_FOR_ALLOC freed 601K, 8% free 9230K/10032K, paused 56ms, total 60ms
09-07 05:33:05.029 11715-11833/tonightfootballreport.com.tfr D/dalvikvm: GC_FOR_ALLOC freed 258K, 6% free 10866K/11548K, paused 8ms, total 8ms


Please why is that error thrown? How can I fix it please? Is the Viber share API I am following correct? Please help me.

Answer

There's no guarantee there's activity with intent-filter matching your requirements, therefore startActivity() can fail and this should be handled in your code. If that happens it throws ActivityNotFoundException, so simply wrap your startActivity() with try/catch

Comments