মাল্টি-সিম ডিভাইসে আগত কলটির লক্ষ্য সিমকার্ড সনাক্ত করা


10

আমি প্রচুর পোস্ট পড়েছি এবং অনেকগুলি সমাধান চেষ্টা করেছি, তবে সমস্ত পোস্টের সাধারণ বক্তব্যটি ছিল যে তারা সমস্ত পুরানো এবং কমপক্ষে এমন কোনও সমাধান খুঁজে পেল না যা অ্যান্ড্রয়েডের নতুন সংস্করণগুলিতে কাজ করবে।

পোস্ট 1 , ফলাফল: intent.getExtras().getInt("simId", -1)সর্বদা ফেরত -1

পোস্ট 2 , ফলাফল: intent.getExtras().getInt("slot", -1)সর্বদা ফেরত -1

পোস্ট 3 , ফলাফল:

String[] array = new String[]{
        "extra_asus_dial_use_dualsim",
        "com.android.phone.extra.slot",
        "slot",
        "simslot",
        "sim_slot",
        "subscription",
        "Subscription",
        "phone",
        "com.android.phone.DialingMode",
        "simSlot",
        "slot_id",
        "simId",
        "simnum",
        "phone_type",
        "slotId",
        "slotIdx"
};

for (String item :
        array) {
    Log.i(TAG, "Sim Card - " + item + " -----> " + intent.getExtras().getInt(item));
}

লগ:

PhoneCallReceiver: Sim Card - extra_asus_dial_use_dualsim -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.extra.slot -----> 0
PhoneCallReceiver: Sim Card - slot -----> 0
PhoneCallReceiver: Sim Card - simslot -----> 0
PhoneCallReceiver: Sim Card - sim_slot -----> 0
PhoneCallReceiver: Sim Card - subscription -----> 0
PhoneCallReceiver: Sim Card - Subscription -----> 0
PhoneCallReceiver: Sim Card - phone -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.DialingMode -----> 0
PhoneCallReceiver: Sim Card - simSlot -----> 0
PhoneCallReceiver: Sim Card - slot_id -----> 0
PhoneCallReceiver: Sim Card - simId -----> 0
PhoneCallReceiver: Sim Card - simnum -----> 0
PhoneCallReceiver: Sim Card - phone_type -----> 0
PhoneCallReceiver: Sim Card - slotId -----> 0
PhoneCallReceiver: Sim Card - slotIdx -----> 0

এটি প্রথম সিমকার্ড এবং দ্বিতীয় সিমকার্ডের জন্য একই মান 0 দিয়ে একই লগগুলি প্রদর্শন করে।

আমি অন্যান্য অনুরূপ পোস্ট চেষ্টা করেছি। কেউই অ্যান্ড্রয়েডের নতুন সংস্করণে কাজ করেনি!

অ্যান্ড্রয়েড (7.0 বা উচ্চতর) এর নতুন সংস্করণগুলিতে কাজ করে এমন কি আরও একটি সমাধান রয়েছে?


intent.getExtras().getInt("item")<- আপনি itemবরং ব্যবহার করা উচিত নয় "item"?
মাইকেল

এছাড়াও, আপনি কি অনুমানের সাথে যুক্ত সমস্ত অতিরিক্ত মুদ্রণের চেষ্টা করেছেন, আপনি ধরে নিচ্ছেন এমন তুলনায় নামকরণে কোনও পার্থক্য আছে কিনা তা দেখতে?
মাইকেল

এটি "আইটেম" বা আইটেম সহ সর্বদা 0 প্রদান করে।
আলিরেজা নুরালি

ঠিক আছে, "item"এই প্রসঙ্গে প্রায় অবশ্যই ভুল। যেমনটি আমি বলেছিলাম, আপনি যা প্রত্যাশা করছেন তার চেয়ে আপনার কী ছাপানোর চেষ্টা করুন। যদিও এই পুরো সমাধানটি কিছুটা হ্যাকের মতো দেখাচ্ছে, তাই আপনি যে কোনও ব্যবহারযোগ্য কী খুঁজে পান সেটি এখনও কিছু ডিভাইসে কাজ না করে।
মাইকেল

উত্তর:


1

অফিসিয়ালি, অভিপ্রায় দ্বারা সরবরাহ করা একমাত্র ডকুমেন্টেড মান হ'ল ফোন নম্বর।

কিছু কনস্ট্রাক্টররা অভিপ্রায় সিম স্লট সংখ্যার মতো অন্যান্য মান যুক্ত করে তবে এটি বাধ্যতামূলক নয়। এই কারণেই এখানে অনেকগুলি স্লট কী-এর নাম পাওয়া সম্ভব, যেমন 3 পোস্টের মধ্যে উপস্থাপিত , প্রতিটি নির্মাণকারী তার নিজের প্রয়োগ বাস্তবায়ন করে।

এটিও সম্ভব যে কোনও নির্মাণকারী কিছু মডেলগুলিতে এই মানটি যুক্ত করেনি এবং এটি অবশ্যই আপনার মডেলের ক্ষেত্রে। কনস্ট্রাক্টর ডেলিভারি না করলে এই মানটি খুঁজে পাওয়ার কোনও উপায় নেই।


কারণ উত্তরটি কেবল একটি ব্যাখ্যা, আমি এটিকে নিশ্চিতভাবে অনুমোদিত বা বাতিল করতে পারি না। তবে দেখা যাচ্ছে, উত্তরটি যৌক্তিক।
আলিরেজা নুরালি

2

আপনি যদি এটির মতো করে থাকেন তবে এটি কাজ করা উচিত। আপনার পরীক্ষার ডিভাইসটি অ্যান্ড্রয়েড 5.1 বা তারও বেশি উপরে চালিত হয়েছে তা নিশ্চিত করুন। ডুয়াল সিম সমর্থন ভি 5.1 এ যুক্ত করা হয়েছে ( এখানে দেখুন )

public class IncomingCallInterceptor extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    String callingSIM = "";
    Bundle bundle = intent.getExtras();
    callingSIM = String.valueOf(bundle.getInt("simId", -1));

    if(callingSIM.equals("0")){
           // Incoming call from SIM1
        } else if(callingSIM.equals("1")){
           // Incoming call from SIM2
        }
    }
}

ম্যানিফেস্টে নীচের অনুমতিটি যোগ করেছেন তা নিশ্চিত করুন

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

বিঃদ্রঃ :

এই মানগুলি সবসময় আসা উচিত নয়। নেটওয়ার্ক সরবরাহকারীর সমর্থন প্রয়োজন। দয়া করে এখানে ডকুমেন্টেশন পড়ুন

বর্তমান সাবস্ক্রিপশনের ক্যারিয়ার আইডি। সাবস্ক্রিপশনটি অনুপলব্ধ থাকলে বা ক্যারিয়ারটি সনাক্ত করা না গেলে UNKNOWN_CARRIER_ID ফেরত দিন।


1
আমি ইতিমধ্যে READ_PHONE_STATEঅনুমতি যোগ করেছি তবে আমি সর্বদা পাইcallingSIM = -1
আলিরেজা নুরালি

আপনি কোন ডিভাইসটি পরীক্ষার জন্য ব্যবহার করছেন তা আলিরিজা নুরালি এবং আপনি এটি অ্যান্ড্রয়েড 7 ডিভাইসের নীচে কাজ করছেন?
দ্রোদেব

ডিভাইসটি স্যামসাং গ্যালাক্সি এস 6 অ্যান্ড্রয়েড 7.0 7 আমি নীচে অ্যান্ড্রয়েড 7 ডিভাইস সম্পর্কে নিশ্চিত নই
আলিরেজা নুরালি

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