একটি অভিপ্রায় সহ এসএমএস অ্যাপ্লিকেশন চালু করুন


144

আমার একটি উদ্দেশ্য সম্পর্কে একটি প্রশ্ন আছে ... আমি এসএমএস অ্যাপ্লিকেশন চালু করার চেষ্টা করি ...

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setType("vnd.android-dir/mms-sms");
int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP |
    Intent.FLAG_ACTIVITY_CLEAR_TOP;
intent.setFlags(flags);
intent.setData(Uri.parse("content://sms/inbox"));
context.startActivity(intent);

সুতরাং, আপনি দেখতে পাচ্ছেন যে আমি আমার উদ্দেশ্যে খুব বেশি জিনিস রেখেছি, তবে এটি কারণ আমি কীভাবে করতে পারি তা জানি না ... ধন্যবাদ


1
চেকআউট gist.github.com/gelldur/9c199654c91b13478979 আপনি এসএমএস অ্যাপের মাধ্যমে ভাগ করতে পারেন
দাউদ ড্রোজ ২

উত্তর:


238

এসএমএস ক্রিয়াকলাপ শুরু করার জন্য আপনার যা প্রয়োজন তা হ'ল:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);         
sendIntent.setData(Uri.parse("sms:"));

আপনি নিজের বার্তা এবং এর মতো জনপ্রিয় করতে অতিরিক্ত যুক্ত করতে পারেন

sendIntent.putExtra("sms_body", x); 

তারপরে কেবল অভিপ্রায় সহ কার্যকলাপ শুরু করুন।

startActivity(sendIntent);

আমি চেষ্টা করেছি, তবে যখন আপনি যা দেবেন ঠিক তেমনই লিখি, তখন গ্রহিত কনসোল রিটার্ন (সংকলন করার সময়) "কোনও লঞ্চার ক্রিয়াকলাপ পাওয়া যায় নি!"
অলিভিয়ার 69

ঠিক আছে, আপনার ম্যানিফেস্টে এর অভিপ্রায় ফিল্টারে নিম্নলিখিত বৈশিষ্ট্যগুলি নিয়ে আপনার কোনও কার্যকলাপ আছে? <অ্যাকশন অ্যান্ড্রয়েড: নাম = "android.intent.action.MAIN" /> <বিভাগ অ্যান্ড্রয়েড: নাম = "android.intent.category.LAUNCHER" />
jqpubliq

প্রকৃতপক্ষে, লঞ্চটি একটি অ্যাপজিডেজেটিভিটি থেকে আসে। পারহস এটি এখান থেকে কমস করে, আমি আপনি যা প্রকাশ্যে করেছিলে তা দিয়েছি এবং কিছুই ঘটেনি ... আমি আমার বোতামটি অন্য ফাংশন দিয়ে পরীক্ষা করেছি এবং এইটি যেতে চায় না !!
অলিভিয়ার 69

22
স্বয়ং 'থেকে' বক্সে ফোন নম্বর, কোড পরিবর্তনের setData লাইন অন্তর্ভুক্ত sendIntent.setData(Uri.parse("sms:" + phoneNumber));(ধন্যবাদ jqpubliq এবং jaydeepw)
tmr

2
আমাকে এসএমএস পাঠানো হয়েছে কিনা তা যাচাই করা দরকার বা যখন ব্যবহারকারী আমার অ্যাপ থেকে এসএমএস প্রেরণ করবেন ইনটেন্ট টিআই এসএমএসের মাধ্যমে আমি কীভাবে এটি করতে পারি?
ব্যবহারকারী

139
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", "12125551212");
smsIntent.putExtra("sms_body","Body of Message");
startActivity(smsIntent);

4
সবচেয়ে ভালো সমাধান! ধন্যবাদ!
নিক

20
সচেতন থাকুন, এটি অ্যান্ড্রয়েড ৪.৪ এর জন্য কাজ করবে না এবং সম্ভবত আপ ... "vnd.android-dir / mms-sms" আর সমর্থিত নয়
ম্যাক্স Ch

2
মাত্র অ্যান্ড্রয়েড ৪.৪.২ এ পরীক্ষা করা হয়েছে এবং এটি কাজ করছে। আপনি কি আমাকে এই ঘোষণার সাথে সংযুক্ত করতে পারেন? @ ম্যাক্সসিএইচ
থকনাট

3
যদি আমার ক্ষেত্রে ফোন নম্বরটি যুক্ত না করা হয় তবে কেবল যুক্ত করুন:intent.setData(Uri.parse("smsto:" + phoneNumber));
ইউটোপিয়া

4
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW typ=vnd.android-dir/mms-sms (has extras) }
এনগুইন মিন বিন

49

যদি অ্যান্ড্রয়েড সংস্করণ কিটক্যাট বা তার বেশি হয় তবে ব্যবহারকারীরা ডিফল্ট এসএমএস অ্যাপ্লিকেশনটি পরিবর্তন করতে পারেন। এই পদ্ধতিটি ডিফল্ট এসএমএস অ্যাপ্লিকেশন পাবে এবং ডিফল্ট এসএমএস অ্যাপ্লিকেশনটি শুরু করবে।

private void sendSMS() {    
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat
      {
         String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); // Need to change the build to API 19

         Intent sendIntent = new Intent(Intent.ACTION_SEND);
         sendIntent.setType("text/plain");
         sendIntent.putExtra(Intent.EXTRA_TEXT, "text");

         if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose
         // any app that support this intent.
         {
            sendIntent.setPackage(defaultSmsPackageName);
         }
         startActivity(sendIntent);

      }
      else // For early versions, do what worked for you before.
      {
         Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
         smsIntent.setType("vnd.android-dir/mms-sms");
         smsIntent.putExtra("address","phoneNumber");         
         smsIntent.putExtra("sms_body","message");
         startActivity(smsIntent);
      }
   }

2
আমি কিটকাট সংস্করণ ব্যবহার করছি। আমি টো ফিল্ডে রিসিভার নম্বর সেট করতে চাই। আমি কীভাবে সেট করতে পারি?
কার্তিক্যায়ান Ve

3
@ কার্তিকেইয়ান দয়া করে আপনি কি চেষ্টা করতে পারেন? ইন্টেন্ট সেন্ডইন্টেন্ট = নতুন ইনটেন্ট (ইনটেন্ট.এक्शन_এসইএনডিটিও); sendIntent.setData (Uri.parse ( "smsto: PHONENUMBER"));
অ্যান্ড্রয়েড_ডিভুলার

আমি চেষ্টা করেছিলাম. এটা ঠিক আছে। তবে আমি যখন বার্তা অ্যাপ্লিকেশন থেকে পিছনের বোতামটি ক্লিক করি তখন এটি আমার অ্যাপ্লিকেশনটিও বন্ধ করে দেয়। আমি যদি বার্তা অ্যাপ্লিকেশন থেকে ফিরে টিপিত হয় তবে এটি আমার অ্যাপে ফিরে যাবে যেখানে আমি রেখেছি।
কার্তিক্যায়ান Ve

2
দুর্দান্ত উত্তর। আপনি যদি সরাসরি ডিফল্ট এসএমএস অ্যাপ্লিকেশনটিতে যেতে চান তবে ব্যবহার করুন, মোহন যেমন কাজ করে। আপনি যদি চান চয়নকারী এখানে অন্যান্য উত্তর দেখুন।
নেমানজা কোভেসেভিক

1
আমি বার্তা থেকে ফিরে এলে অ্যাপ্লিকেশন বন্ধ কেন
মুহাম্মদ ইউনাস

31
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);

আপনার এটাই দরকার।


কোড অ্যান্ড্রয়েড ৪.২.২ এ কাজ করছে, এটি এসএমএসের জন্য তালিকা প্রদর্শনটি খুলবে। এটাই তো আমার দরকার !!!
বিষাল ভিরडिया

22

আপনি যদি আপনার অন্য কিছু ক্রিয়াকলাপ থেকে এসএমএস রচনা কার্যকলাপ চালু করতে চান এবং আপনাকে একটি ফোন নম্বর এবং এসএমএস পাঠ্যও পাস করতে হয় তবে এই কোডটি ব্যবহার করুন:

Uri sms_uri = Uri.parse("smsto:+92xxxxxxxx"); 
Intent sms_intent = new Intent(Intent.ACTION_SENDTO, sms_uri); 
sms_intent.putExtra("sms_body", "Good Morning ! how r U ?"); 
startActivity(sms_intent); 

নোট: এখানে sms_bodyএবং smsto:, কোন এসএমএস রচনা কার্যকলাপের চিত্র টেক্সট ও ফোন স্বীকৃতি দেবার জন্য কী তাই এখানে সতর্কতা অবলম্বন করা আবশ্যক।


মেসেজের অভিপ্রায়টি শুরু করার সময় বা অ্যাপ্লিকেশনটি বন্ধ থাকে যখন আমি কী অ্যাপ্লিকেশনটি বন্ধ করে দিই
মুহাম্মদ ইউনাস

প্রথমে আমাকে বলুন আপনি যখন এই কোডটি কার্যকর করেন তখন এটি কি এসএমএস ফাংশনটি লিখে দেয়, যদি অ্যাপ্লিকেশনটি ব্যাক বোতামটি আঘাত করার পরে বন্ধ হয় তবে আপনার কোডে কিছু সমস্যা হবে, বিশেষত পাবলিক বায়োড ব্যাকপ্রেসড ()}} ফাংশনে
পীর ফাহিম শাহ

আমি ব্যাকপ্রেসড ফাংশন ওভাররাইট করি নি
মুহাম্মদ ইউনাস

17

এখানে কোড রয়েছে যা এসএমএস ক্রিয়াকলাপটি যে ফোন নম্বরটিতে এসএমএস পাঠাতে হবে তার সাথে পূর্ব-জনবহুল এসএমএস ক্রিয়াকলাপটি খুলবে। এটি এমুলেটারের পাশাপাশি ডিভাইসেও সূক্ষ্মভাবে কাজ করে

Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.setData(Uri.parse("sms:" + phoneNumber));
startActivity(smsIntent);

1
এই বার্তায় আমি কীভাবে একটি ছবি সংযুক্ত করতে পারি?
অমীমাংসিত_

আমি এই সম্পর্কিত 1 টি প্রশ্ন, যদি আমরা ফ্রেমওয়ার্ক কোডটি দেখি, সেটটাইপ () ডেটাটি নাল এবং সেটডেটা হিসাবে তৈরি করে () টাইপটি শূন্য করে তোলে। তাহলে কীভাবে এই ক্ষেত্রে প্রকারটি বহাল থাকবে?
অ্যান্ড্রয়েডগুই

কীভাবে আমরা এসএমএসে পাঠ্যের ফন্টটি পরিবর্তন করতে পারি
jyomin

5

ব্যবহার

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");

1
এটি আমার জন্য স্টক অ্যাপ্লিকেশন যেমন এমুলেটরটিতে কাজ করে তবে এটি গ্যালাক্সি এস 3-তে সম্ভবত উদাহরণস্বরূপ কাজ করে না।
জি লোম্বার্ড

1
@ জি.লম্বার্ড লোম্বার্ড হ্যাঁ এই কোডটি এস 3-তে কাজ করছে না। এস 3 এর জন্য কোনও সমাধান?
বিবেক কুমার শ্রীবাস্তব

4

আমি ব্যবহার করি:

Intent sendIntent = new Intent(Intent.ACTION_MAIN);
sendIntent.putExtra("sms_body", "text");
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

4
Intent eventIntentMessage =getPackageManager()
 .getLaunchIntentForPackage(Telephony.Sms.getDefaultSmsPackage(getApplicationContext));
startActivity(eventIntentMessage);

এসডিকেএনটিটি> = 19 এর জন্য (যেখানে এই এপিআই উপলব্ধ রয়েছে) এটি কাজ করে। আসলে নওগাতের সাথে আমার নেক্সাস 6-এ একমাত্র কার্যক্ষম সমাধান হ'ল যদি আপনি বার্তাগুলির তালিকা সহ এসএমএস অ্যাপ খুলতে চান
লুজপ

3
try {
    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setData(Uri.parse("smsto:" + Uri.encode(number)));
    smsIntent.putExtra("address", number);
    smsIntent.putExtra("sms_body", message);

    PackageManager pm = activity.getPackageManager();
    List<ResolveInfo> resInfo = pm.queryIntentActivities(smsIntent, 0);

    for (int i = 0; i < resInfo.size(); i++) {
        ResolveInfo ri = resInfo.get(i);
        String packageName = ri.activityInfo.packageName;

        if (packageName.contains("sms")) {
            //Log.d("TAG", packageName + " : " + ri.activityInfo.name);
            smsIntent.setComponent(new ComponentName(packageName, ri.activityInfo.name));
        }
    }
    activity.startActivity(smsIntent);
} catch (Exception e) {
    // Handle Error
}

এটি করার সর্বোত্তম উপায়।


শুধুমাত্র এই কোডটি আমার পক্ষে কাজ করে ... তবে কীভাবে একাধিক এসএমএস অ্যাপ্লিকেশন নির্বাচন এড়ানো যায় ... কেবলমাত্র ডিফল্ট শুরু হবে ..
মাহবুবুর রহমান খান

3

আপনি ডিফল্ট এসএমএস অ্যাপ খুলতে পারেন এবং নীচের মতো বিশদটি পাস করতে পারেন:
দ্রষ্টব্য: আপনি যদি অনেক সংখ্যায় প্রেরণ করতে চান তবে প্রতিটি সংখ্যা "" দিয়ে আলাদা করুন; ভিতরে স্ট্রিং

String mblNumVar = "9876543210;9123456789";
Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW);
smsMsgAppVar.setData(Uri.parse("sms:" +  mblNumVar));
smsMsgAppVar.putExtra("sms_body", "Hello Msg Tst Txt");
startActivity(smsMsgAppVar);

| অথবা | এই ফাংশনটি ব্যবহার করুন:

void openSmsMsgAppFnc(String mblNumVar, String smsMsgVar)
{
    Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW);
    smsMsgAppVar.setData(Uri.parse("sms:" +  mblNumVar));
    smsMsgAppVar.putExtra("sms_body", smsMsgVar);
    startActivity(smsMsgAppVar); 
}

এটি দুটি বিকল্প দেখায়, 1. হ্যাঙ্গআউট এবং 2. ডিফল্ট বার্তা অ্যাপ্লিকেশন। আমি জোর করে অ্যান্ড্রয়েড বার্তা অ্যাপ্লিকেশন খুলতে চাই open কীভাবে আমরা এটি সংরক্ষণাগারভুক্ত করতে পারি?
মিলিণ্ড মেভাদা

3

ইন kotlin এই সহজে বাস্তবায়ন করা যায় নিম্নরূপ:

/**
 * If android version is Kitkat or above, users can change default sms application.
 * This method will get default sms app and start default sms app.
 */
private fun openSMS() {
    val message = "message here"
    val phone = "255754......." //255 Tanzania code.

    val uri = Uri.parse("smsto:+$phone")
    val intent = Intent(Intent.ACTION_SENDTO, uri)

    with(intent) {
        putExtra("address", "+$phone")
        putExtra("sms_body", message)
    }

    when {
        Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT -> {
            //Getting the default sms app.
            val defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(context)

            // Can be null in case that there is no default, then the user would be able to choose
            // any app that support this intent.
            if (defaultSmsPackageName != null) intent.setPackage(defaultSmsPackageName)

            startActivity(intent)
        }
        else -> startActivity(intent)
    }
}

এটি @ মুস্তাফেসেভগির পরিবর্তিত উত্তর


2
Intent sendIntent = new Intent(Intent.ACTION_SEND); 
//CHANGE YOUR MESSAGING ACTIVITY HERE IF REQUIRED 
sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
sendIntent.putExtra("sms_body",msgbody); 
sendIntent.putExtra("address",phonenumber);
//FOR MMS
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/mms.png"));
sendIntent.setType("image/png");
startActivity(sendIntent);

2

ডিফল্ট এসএমএস অ্যাপের সাথে কাজ করে এমন সেরা কোডটি।

Uri SMS_URI = Uri.parse("smsto:+92324502****"); //Replace the phone number
Intent sms = new Intent(Intent.ACTION_VIEW,SMS_URI);    
sms.putExtra("sms_body","This is test message"); //Replace the message witha a vairable 
startActivity(sms);

1

নীচের কোডটি Android 6.0 এ কাজ করে on
এটি নির্দিষ্ট স্ট্রিং সম্পর্কিত কথোপকথনের সাথে ডিফল্ট মেসেজিং অ্যাপ্লিকেশনটিতে অনুসন্ধান ক্রিয়াকলাপটি খুলবে।

Intent smsIntent = new Intent(Intent.ACTION_MAIN);
        smsIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        smsIntent.setClassName("com.android.mms", "com.android.mms.ui.SearchActivity");
        smsIntent.putExtra("intent_extra_data_key", "string_to_search_for");
        startActivity(smsIntent);  

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

"Intent_extra_data_key"

যেমনটি এই শ্রেণীর অনক্রিটে প্রদর্শিত হয়েছে

String searchStringParameter = getIntent().getStringExtra(SearchManager.QUERY);
    if (searchStringParameter == null) {
        searchStringParameter = getIntent().getStringExtra("intent_extra_data_key" /*SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA*/);
    }
    final String searchString = searchStringParameter != null ? searchStringParameter.trim() : searchStringParameter;

আপনি এসএমএসের SENDER_ADDRESS কে স্ট্রিং অতিরিক্ত হিসাবেও পাস করতে পারেন, যা নির্দিষ্ট প্রেরকের ঠিকানার সাথে সমস্ত কথোপকথনের তালিকা তৈরি করবে।

পরীক্ষা করে দেখুন com.android.mms.ui.SearchActivity আরও তথ্যের জন্য

আপনি এই উত্তরটিও পরীক্ষা করতে পারেন


0

এমুলেটর উপর আমার জন্য এই কাজ

Intent i = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null));
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.putExtra("sms_body", remindingReason);

                startActivity(i);

0

এসএমএস উদ্দেশ্য:

Intent intent = new Intent("android.intent.action.VIEW");
        /** creates an sms uri */
        Uri data = Uri.parse("sms:");
        intent.setData(data);

0

এসএমএস রচনা:

Uri smsUri = Uri.parse("tel:" + to);
Intent intent = new Intent(Intent.ACTION_VIEW, smsUri);
intent.putExtra("address", to);
intent.putExtra("sms_body", message);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);

0

হয় আপনি এটি ব্যবহার করতে পারেন, উভয়ই 4.4 এর উপরে অ্যান্ড্রয়েডে দুর্দান্ত কাজ করছেন

    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setType("vnd.android-dir/mms-sms");
    smsIntent.putExtra("address","9212107320");
    smsIntent.putExtra("sms_body","Body of Message");
    startActivity(smsIntent);

অথবা

    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.putExtra("sms_body","Body of Message");
    smsIntent.setData(Uri.parse("sms:9212107320"));
    startActivity(smsIntent);

0

আপনার লক্ষ্য অর্জনের জন্য আপনি নিম্নলিখিত কোড স্নিপেট ব্যবহার করতে পারেন:

Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
smsIntent.setData(Uri.parse("smsto:"+model.getPhoneNo().trim()));
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
smsIntent.putExtra("sms_body","Hello this is dummy text");
startActivity(smsIntent);

আপনি যদি কোনও পাঠ্য না চান তবে এসএমএস_বডি কীটি সরান।

Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
smsIntent.setData(Uri.parse("smsto:"+shopkepperDataModel.getPhoneNo().trim()));
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(smsIntent);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.