ইন্টেন্ট হ্যান্ডেল করার জন্য কোনও ক্রিয়াকলাপ পাওয়া যায় নি: android.intent.action.VIEW


101

রেকর্ডকৃত অডিও 3 জিপি ফাইলটি খেলতে এটি আমার কোড

 Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
        Uri data = Uri.parse(path);
        intent.setDataAndType(data, "audio/mp3");
        startActivity(intent);

তবে এটি আমার এইচটিসি ডিভাইসে চালানোর সময় (অ্যান্ড্রয়েড ২.২ ফ্রয়েও) একটি ব্যতিক্রম দেখায়:

05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.597: WARN/System.err(4065):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1567)
05-04 16:37:37.597: INFO/ActivityManager(92): Starting activity: Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1537)
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.Activity.startActivityForResult(Activity.java:2858)
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.Activity.startActivity(Activity.java:2964)
05-04 16:37:37.607: WARN/System.err(4065):     at com.ey.camera.AudioRecorder.playAudio(AudioRecorder.java:244)
05-04 16:37:37.607: WARN/System.err(4065):     at com.ey.camera.AudioRecorder$4.onClick(AudioRecorder.java:225)
05-04 16:37:37.607: WARN/System.err(4065):     at android.view.View.performClick(View.java:2408)
05-04 16:37:37.607: WARN/System.err(4065):     at android.view.View$PerformClick.run(View.java:8817)
05-04 16:37:37.607: WARN/System.err(4065):     at android.os.Handler.handleCallback(Handler.java:587)
05-04 16:37:37.607: WARN/System.err(4065):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-04 16:37:37.607: WARN/System.err(4065):     at android.os.Looper.loop(Looper.java:144)
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.ActivityThread.main(ActivityThread.java:4937)
05-04 16:37:37.607: WARN/System.err(4065):     at java.lang.reflect.Method.invokeNative(Native Method)
05-04 16:37:37.607: WARN/System.err(4065):     at java.lang.reflect.Method.invoke(Method.java:521)
05-04 16:37:37.607: WARN/System.err(4065):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-04 16:37:37.607: WARN/System.err(4065):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-04 16:37:37.607: WARN/System.err(4065):     at dalvik.system.NativeStart.main(Native Method)

গ্যালাক্সি ট্যাবলেটে এটি ঠিকঠাক কাজ করছে। আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি?


4
এটি কি কারণ আপনার ফাইলটি .3gp এবং আপনার সিস্টেমটি এমপি 3 এর ডেটা খেলতে বলছে?
ব্লুন্ডেল

@Blundell আমি 3gp সঙ্গে চেষ্টা BT এখনো ব্যতিক্রম ফেলা হয়
Jennifer

উত্তর:


157

ইউআরএল ঠিকানাগুলি অবশ্যই আগে পোস্ট করা উচিত: http: //

Uri uri = Uri.parse("www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

একটি ক্রিয়াকলাপ নটফাউন্ডএক্সেপশন ছুড়ে দেয়। যদি আপনি "HTTP: //" প্রেন্ডেন্ড করেন, সমস্যা সমাধান হয়েছে।

Uri uri = Uri.parse("http://www.google.com");

ওপিকে সাহায্য নাও করতে পারে, তবে আমি এখানেই একই ব্যাতিক্রম অনুসন্ধান করেছি এবং এটি অন্যকে সাহায্য করে।


8
দুর্দান্ত! স্কিম একটি আবশ্যক। file://আমার ক্ষেত্রে অনুপস্থিত ছিল যতক্ষণ না আমি পরিবর্তন Uri.parse()করতে Uri.fromFile()
স্ট্যান

সমাধানের জন্য @ স্ট্যান থেক্স
সার্জ বুরলাকা

ইউআরএলটি এনকোড করার সময় আমি একটি সমস্যা Uri.parse(Uri.decode(encodedString))
হচ্ছিলাম

44

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে কোনও ওয়েব পৃষ্ঠা খোলার চেষ্টা করার সময় আপনি যদি এই ত্রুটিটি পেয়ে থাকেন তবে এটি আপনার URL টি দেখতে দেখতে এটি হ'ল:

www.google.com

পরিবর্তে: https://www.google.comবাhttp://www.google.com

আপনার ক্রিয়াকলাপ / খণ্ডে এই কোডটি যুক্ত করুন:

 public void openWebPage(String url) {

    Uri webpage = Uri.parse(url);

    if (!url.startsWith("http://") && !url.startsWith("https://")) {
        webpage = Uri.parse("http://" + url);
    }

    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

শুধু আপনার ইউআরএল পাস openWebPage()। যদি এটি ইতিমধ্যে উপসর্গযুক্ত থাকে https://বা http://তারপরে আপনি ভাল হন তবে অন্যথায় যদি বিবৃতি আপনার পক্ষে এটি পরিচালনা করে


34

এটি করার সঠিক উপায় এটি।

    try
    {
    Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
    File file = new File(aFile.getAbsolutePath()); 
    String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
    String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    myIntent.setDataAndType(Uri.fromFile(file),mimetype);
    startActivity(myIntent);
    }
    catch (Exception e) 
    {
        // TODO: handle exception
        String data = e.getMessage();
    }

আপনার আমদানি করতে হবে android.webkit.MimeTypeMap;


এটি করার জন্য এটি দীর্ঘ পথ: d
umerk44

4
সাধারন ব্যতিক্রম সহ একটি ট্রাই ব্লকে প্রচুর কোডটি মোড়ানো সাধারণত ভাল ধারণা নয়। এখানে আচরণটি সম্পূর্ণ অপরিজ্ঞাত - আপনি কি বলতে পারবেন কোন ইনপুটগুলি এক নজরে কোনও বার্তা প্রিন্ট করবে? কোন ব্যতিক্রম দেখা দেবে এবং কেন? এটি কোডের একটি চিহ্ন যা পুরোপুরি পরীক্ষা করা হয়নি।
jbass

20

একটি লিঙ্ক খোলার চেষ্টা করার সময় আমার জন্য:

Uri uri = Uri.parse("https://www.facebook.com/abc/");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);

আমি একই ত্রুটি পেয়েছি android.content.ActivityNotFoundException: No Activity found to handle Intent

সমস্যাটি কারণ আমার ফোনে ইউআরএল (ie ব্রাউজারগুলি) ইনস্টল করতে পারে এমন কোনও অ্যাপ্লিকেশন আমার কাছে নেই। সুতরাং একটি ব্রাউজার ইনস্টল করার পরে সমস্যাটি সমাধান করা হয়েছিল।

* পাঠ: নিশ্চিত করুন যে সেখানে কমপক্ষে একটি অ্যাপ রয়েছে যা আপনি কল করছেন এমন উদ্দেশ্যটি পরিচালনা করে *


6
তাহলে আমরা এই পরিস্থিতিটি কীভাবে পরিচালনা করতে পারি?
নিখিল

কাস্টম রমের সাথে কাস্টম পরীক্ষার ডিভাইস ছাড়া আপনার ইন্টারনেট ক্রিয়াকলাপ হবে। এটি মোটেই শোনাচ্ছে না।
স্টারউইন্ড0

আমি একই সমস্যাটি একজন গ্রাহকের দ্বারা প্রতিবেদন করা হচ্ছে। সুতরাং দেখে মনে হচ্ছে কিছু ডিভাইস রয়েছে যার উপর কোনও ডিফল্ট ইন্টারনেট ব্রাউজার ইনস্টল করা নেই। কীভাবে সমাধান করবেন?
অভিজিৎ

ত্রুটিটি ধরুন এবং একটি তথ্য / সংলাপ / টোস্ট দিন যে তাদের কোনও কার্যকরী ব্রাউজার নেই?
এরলাক্সমান

4
একটি সমাধান দেখুন stackoverflow.com/questions/22479211/… । এই ক্ষেত্রে আপনি জানতে পারবেন যে কোনও ডিভাইসে একটি ডিফল্ট ব্রাউজার রয়েছে (বা কোনও অ্যাপ্লিকেশন যা ডিপ লিঙ্কটি প্রক্রিয়াকরণ করে)।
কুলমাইন্ড

18

ম্যারাগুসের উত্তর আমাকে লগক্যাট আউটপুট চেক আউট করে। দেখা যাচ্ছে যে আপনি উড়ির পথে যাবেন তার উপসর্গ তৈরি করা দরকার
file:/

যেহেতু এটি আপনার স্টোরেজের স্থানীয় পথ।

আপনি খুব নিজের দিকেও তাকান চাইবেন।

`05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }`

মাউন্ট পয়েন্টটি পুরো পথে দু'বার প্রদর্শিত হবে বলে মনে হচ্ছে।


এটি সঠিক উত্তর বলে মনে হচ্ছে, তবে প্রশ্নটি পুরানো এবং ওপি সর্বশেষ প্রায় 2 মাস আগে দেখা গিয়েছিল
ম্যারাগিউস

এটাই আমি করেছি। দুঃখের বিষয়, সমাধানগুলি খুঁজে পাওয়ার পরে আমি কেবল এই উত্তরটি পড়েছিলাম :)
জ্যানিস পিসেনিকস

10

আপনি যদি সঠিক ওয়েব ইউআরএল পাস না করে থাকেন এবং ব্রাউজার না থাকলে অ্যাক্টিভিটি নটফাউন্ডএক্সেপশন হয়, সুতরাং সেই প্রয়োজনীয়তাগুলি পরীক্ষা করুন বা ব্যতিক্রমটি স্পষ্টভাবে পরিচালনা করুন। এটি আপনার সমস্যার সমাধান করতে পারে।

public static void openWebPage(Context context, String url) {
    try {
        if (!URLUtil.isValidUrl(url)) {
            Toast.makeText(context, " This is not a valid link", Toast.LENGTH_LONG).show();   
        } else {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            context.startActivity(intent);
        }
    } catch (ActivityNotFoundException e) {
        Toast.makeText(context, " You don't have any browser to open web page", Toast.LENGTH_LONG).show();
    }
}


3

আমার এই একই সমস্যা ছিল, তাই আমি লগকেটে লগ ইন করা অভিপ্রায়টি দেখছিলাম। গ্যালারী থেকে ভিডিওটি দেখার সময়, এটি একই ইনটেন্টটি বলে। উদাহরণ:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/*");
startActivity(intent);

4
ইন্টেন্ট.সেটডেটাএন্ডটাইপ (ডেটা, "ভিডিও / *") ব্যবহার করার সময় ভিডিওগুলির জন্যও কাজ করে ;
নেস্টার

3

এই ব্যতিক্রম এমনকি যদি পরিবর্তিত হয়

"শ্রুতি/*"

তবে থ্যাঙ্কস থেকে @ স্ট্যান আমি খুব সাধারণ কিন্তু কার্যকর সমাধানে পরিণত করেছি:

Uri.fromFile(File(content)) পরিবর্তে Uri.parse(path)

 val intent =Intent(Intent.ACTION_VIEW)
                    intent.setDataAndType(Uri.fromFile(File(content)),"audio/*")
                    startActivity(intent)

আশা করি এটি তার সমস্যার সমাধান করতে কাউকে সহায়তা করবে।


3

আপনার লগকটে আপনার যদি এই ত্রুটি থাকে তবে এই কোডগুলি ব্যবহার করুন এটি আমাকে সহায়তা করে

 Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.fromFile(new File(data.getLocation())), "audio/*");
            try {
                context.startActivity(intent);
            } catch (ActivityNotFoundException e) {
                Log.d("error", e.getMessage());
            }

এছাড়াও

   Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
            intent.setDataAndType(Uri.fromFile(new File(data.getLocation())), "audio/*");
            try {
                context.startActivity(intent);
            } catch (ActivityNotFoundException e) {
                Log.d("error", e.getMessage());
            }

2

প্রথমে এই কোডটি অ্যান্ড্রয়েড ম্যানিফেস্টের ভিতরে চেষ্টা করুন

  <application>

    <uses-library
        android:name="org.apache.http.legacy"
        android:required="false" />
 </application>

এই কোডটি যদি কাজ করে তবে তা ঠিক আছে। তবে যদি না হয়। আপনি কোন ক্লাস থেকে ডেটা বা uri পাস করতে চান তা এই কোডটি ব্যবহার করে দেখুন ।

Intent window = new Intent(getApplicationContext(), Browser.class);
window.putExtra("LINK", "http://www.yourwebsite.com");
startActivity(window);

এই আপনার সমস্যার সমাধান হবে আশা করি। ধন্যবাদ


1

আমার দুটি ধারণা আছে:

প্রথম: আপনি 3 জিপি ফাইল খেলতে চাইলে আপনার মাইম ধরণের "অডিও / 3 জিপিপি" বা "অডিও / এমপিইগ" ব্যবহার করা উচিত

এবং দ্বিতীয়: আপনি কোনও মাইম টাইপ ছাড়াই এর setData(data)জন্য পদ্ধতি ব্যবহার করতে পারেন intent

আশাকরি এটা সাহায্য করবে.


এখনও ব্যতিক্রম 05-04 17: 30: 30.022: WARN / System.err (4937): অ্যান্ড্রয়েড কন্টেন্ট.অ্যাক্টিভিটি নটফাউন্ডএক্সেপশন: ইন্টেন্ট {অ্যাক্ট = অ্যান্ড্রয়েড.ইন্ট.অ্যাকশন.ভিউ ডেটা = / এমএনটি / এসডিকার্ড / পরিচালনা করতে কোনও কার্যকলাপ পাওয়া যায় নি অডিও-অ্যানড্রয়েড.3gp showing প্রদর্শিত হচ্ছে
জেনিফার

অ্যান্ড্রয়েড কি আপনার 3 জিপি ফাইল সমর্থন করে? developer.android.com/guide/appendix/media-formats.html
পাশা

1

Deep linkingকোনও ডিফল্ট ইনস্টল না থাকলে আপনি কোনও ব্রাউজার হ্যান্ডেল করার সময় বা URL টি এই ব্যতিক্রমটি উত্থাপন করতে পারে । ডিপ লিঙ্কিংয়ের ক্ষেত্রে এমন কোনও অ্যাপ্লিকেশন ইনস্টল করা নেই যা ফর্ম্যাটে কোনও লিঙ্কটি প্রক্রিয়া করতে পারে myapp://mylink

আপনি 29 টি পর্যন্ত এপিআইয়ের জন্য ট্যানজারিন সমাধানটি ব্যবহার করতে পারেন :

private fun openUrl(url: String) {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
    val activityInfo = intent.resolveActivityInfo(packageManager, intent.flags)
    if (activityInfo?.exported == true) {
        startActivity(intent)
    } else {
        Toast.makeText(
            this,
            "No application that can handle this link found",
            Toast.LENGTH_SHORT
        ).show()
    }
}

এপিআই> = 30 এর জন্য আইপিএল 30 তে অভিপ্রায়.আপনার ক্রিয়াকলাপটি শূন্য দেখুন ।


0

অ্যাডের মতো যে কোনও url দিয়ে পরীক্ষা করার চেষ্টা করুন

https://www.google.com

পথে এবং ক্রিয়াকলাপটি শুরু করুন যদি এটির চেয়ে আপনার কাজটি ভুল পথ যোগ করে works

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.