কীভাবে অ্যান্ড্রয়েড অ্যাপ্লিকেশন আইডি পাবেন?


94

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

উত্তর:


148

আপনি applicationIdযদি গ্রেডের দ্বারা সংজ্ঞায়িত মানটির সন্ধান করছেন, আপনি কেবল ব্যবহার করতে পারেন

BuildConfig.APPLICATION_ID 

30
আপনি যদি অ্যান্ড্রয়েড লাইব্রেরি লিখছেন তবে এটি এত কার্যকর হবে না
সাইমন ফেদারস্টোন

4
আমি আমার এসপ্রেসো পরীক্ষায় অ্যাপ্লিকেশন আইডির জন্য এটি ব্যবহার করি: ব্যক্তিগত ভ্যাল টার্গেটকন্টেক্সট = ইনস্ট্রুমেন্টেশন.জেটটারেটকন্টেক্সট () বেসরকারী ভাল অ্যাপ্লিকেশনআইডি = টার্গেটকন্টেক্সট.সেটপ্যাকেজনাম ();
a_subscriber

4
@ সিমোনফিয়ারস্টোন আপনি কি কখনও মডিউল থেকে এটি করবেন তা খুঁজে পেয়েছেন?
মিহাই ফিশার

4
@ মিহাইফিশার আপনাকে মডিউল / লাইব্রেরি আরম্ভ করার জন্য একটি ফাংশন তৈরি করতে হবে এবং তখন সেই ধরণের তথ্য পাস করতে হবে।
সাইমন ফেদারস্টোন

48

যদি application idআপনি উল্লেখ করে থাকেন তবে package nameআপনি পদ্ধতিটি ব্যবহার করতে পারেন Context::getPackageName( http: // http: //developer.android.com/references/android/content/Context.html#getPackageName% ২৯% ৯৯৯ )।

আপনি যদি অন্য অ্যাপ্লিকেশনটির সাথে যোগাযোগ করতে চান তবে একাধিক উপায় রয়েছে:

  1. অন্য অ্যাপ্লিকেশনটির একটি ক্রিয়াকলাপ শুরু করুন এবং "উদ্দেশ্য" এর "অতিরিক্ত" তে ডেটা প্রেরণ করুন
  2. নির্দিষ্ট ক্রিয়া / বিভাগ সহ একটি সম্প্রচার পাঠান এবং অতিরিক্তগুলিতে ডেটা প্রেরণ করুন
  3. আপনার যদি কেবল কাঠামোগত ডেটা ভাগ করতে হয় তবে সামগ্রী সরবরাহকারী ব্যবহার করুন
  4. যদি অন্য অ্যাপ্লিকেশনটির ধারাবাহিকভাবে ব্যাকগ্রাউন্ডে চালানো দরকার হয় তবে সার্ভারটি ব্যবহার করুন এবং নিজেকে পরিষেবাতে "বাঁধাই করুন" use

আপনি যদি আপনার যথাযথ প্রয়োজনীয়তার বিবরণ দিতে পারেন তবে সম্প্রদায়টি আপনাকে আরও ভালভাবে সহায়তা করতে সক্ষম হবে।


যদি আমি সমস্ত তালিকা-অ্যাডাপ্টারের প্রয়োজন মতো অ্যাপগুলির একটি তালিকা প্রদর্শন করতে এবং পূর্ণসংখ্যা হিসাবে আইডি থাকা দরকার তবে কী হবে? আমি ইনস্টল-সময়টি ব্যবহার করতে পারি, তবে এটি দীর্ঘ ধরণের। এটি ইতিবাচক সহায়তা করতে পারে?
অ্যান্ড্রয়েড বিকাশকারী

4
প্যাকেজের নাম সর্বদা অ্যাপ্লিকেশন হয় না, যখন আপনি বিল্ড.gradle এর মাধ্যমে সেট করেন!
জেমশিত ইস্কেন্দ্রভ

4
আসলে, Context.getPackageName() না আবেদন আইডি এবং আসতে না (যদিও তারা সাধারণত একই) প্যাকেজের নাম। পদ্ধতির কিছুটা বিভ্রান্তির নাম হ'ল উত্তরাধিকার। সূত্র: বিকাশকারী.অ্যান্ড্রয়েড
স্টুডিও

প্রসঙ্গ :: getPackageName আপনি কোটলিন ব্যবহার না করে কাজ করে না, এটি "ফাংশন getPackageName (কোটলিন প্রতিবিম্ব উপলব্ধ নয়)"
ডেরেক ঝু

6

আপনি কোন "অ্যাপ্লিকেশন আইডি" উল্লেখ করছেন তা আমি নিশ্চিত নই, তবে আপনার অ্যাপ্লিকেশনটির একটি অনন্য পরিচয়দাতার জন্য আপনি ব্যবহার করতে পারেন:

আপনার বর্তমান কার্যকলাপ থেকে getApplication ()। getPackageName () পদ্ধতিটি পান


4
প্রতিটি ইনস্টল করা অ্যাপ্লিকেশনটির একটি স্বতন্ত্র আইডি রয়েছে ... অন্য অ্যাপ্লিকেশন থেকে কোনও অ্যাপ্লিকেশনটির অনন্য আইডি পাওয়া সম্ভব
আরামস

4
তাই না getApplicationContext().getPackageName()?
superarts.org

ধরুন আপনার কাছে রিলিজ বা ডিবাগের মতো প্রকারের নির্মাণ রয়েছে এবং আপনি একটি প্রত্যয় যুক্ত করেছেন, উদাহরণস্বরূপ, "ডিবাগ" এটি মূল অ্যাপ্লিকেশন থেকে পৃথক করতে, সেক্ষেত্রে getpackageName () আপনাকে originalpackagename.debug দেবে
আমান ভার্মা


2

পদক্ষেপ 1: গুগল প্লে স্টোরটি খুলুন

পদক্ষেপ 2: অ্যাপ স্টোরের যে কোনও অ্যাপ খুলুন উদাহরণ: ফেসবুক

পদক্ষেপ 3: যে কোনও অ্যাপ্লিকেশনটিতে ক্লিক করুন এবং ব্রাউজার লিঙ্কটি দেখুন এবং এন্ড আইডি = com.facebook.katana & hl = en থাকবে এবং এটি আপনার অ্যাপসের অনন্য আইডি।


1

অন্যথায় আপনি আপনার অ্যাপ্লিকেশনটির প্রক্রিয়াকরণের আইডি পেতে পারেন:

চূড়ান্ত স্ট্যাটিক ইন্ট android.os.Process.myPid ()
এই প্রক্রিয়াটির শনাক্তকারীকে ফিরিয়ে দেয়, যা কিলপ্রসেস (ইনট) এবং সেন্ডসিনাল (ইনট, ইনট) এর সাথে ব্যবহার করা যেতে পারে।


1

আপনার কীসের জন্য অ্যাপ / ইনস্টলেশন আইডি দরকার তা আমি নিশ্চিত নই, তবে অ্যান্ড্রয়েড বিকাশকারীদের একটি দুর্দান্ত নিবন্ধে আপনি বিদ্যমান সম্ভাবনাগুলি পর্যালোচনা করতে পারেন:

সংক্ষেপে:

  • UUID.randomUUID() প্রথমবার আইডি তৈরির জন্য কোনও অ্যাপ্লিকেশন ইনস্টলের পরে চালিত হয় এবং পরে সহজ পুনরুদ্ধার হয়
  • TelephonyManager.getDeviceId() প্রকৃত ডিভাইস শনাক্তকারীর জন্য
  • Settings.Secure.ANDROID_ID তুলনামূলকভাবে আধুনিক ডিভাইসগুলিতে

0

PackageInfo.sharedUserIdক্ষেত্র ব্যবহারকারী আইডি দেখাবে ম্যানিফেস্টে নির্ধারিত

আপনি যদি দুটি অ্যাপ্লিকেশন একই ব্যবহারকারী আইডির জন্য চান তবে তারা একে অপরের ডেটা দেখতে এবং একই প্রক্রিয়াতে চলতে পারে, তবে ম্যানিফেস্টে তাদের একই ব্যবহারকারীর নিয়োগ করুন:

android:sharedUserId="string"

একই শেয়ার্ড ইউজারআইডিযুক্ত দুটি প্যাকেজের একই স্বাক্ষর থাকাও দরকার।

আমি এখানে সঠিক দিকের ধাক্কা দেওয়ার জন্য পড়ারও পরামর্শ দেব ।


2 টি পৃথক অ্যাপ্লিকেশন ব্যবহার একই প্যাকেজের নাম মানে, অ্যাপ্লিকেশন ডেটা ভাগ করে নিতে পারেন ...?
arams

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

0

যদি পুরো উদ্দেশ্যটি অন্য কোনও অ্যাপ্লিকেশনটির সাথে ডেটা যোগাযোগ করা হয় তবে ইন্টেন্টের সেন্ডব্রোডকাস্ট পদ্ধতিগুলি ব্যবহার করুন।


0

আপনি যদি নতুন ** গ্রেডল বিল্ড সিস্টেম ব্যবহার করছেন তবে getPackageNameঅদ্ভুতভাবে অ্যাপ্লিকেশন আইডি ফিরিয়ে দেবে, প্যাকেজের নাম নয়। সুতরাং মাস্টারগৌরবের উত্তরটি সঠিক তবে তাকে ++ দিয়ে আরম্ভ করার দরকার নেই

যদি অ্যাপ্লিকেশন আইডি দ্বারা, আপনি প্যাকেজের নাম উল্লেখ করছেন ...

পার্থক্য সম্পর্কে এখানে আরও দেখুন ।

** এই মুহুর্তে তেমন নতুন নয়

++ আমি বুঝতে পারি যে তার উত্তরটি ২০১১ সালে নিখুঁতভাবে তৈরি হয়েছিল


0

অ্যান্ড্রয়েড অ্যাপ্লিকেশন ইএস ফাইল এক্সপ্লোরার ব্যবহারকারী অ্যাপ্লিকেশন বিভাগে অ্যান্ড্রয়েড প্যাকেজটির নামটি দেখায় যা বিটওয়ার্ডেনের জন্য দরকারী। বিটওয়ার্ডেন এটিকে "অ্যান্ড্রয়েড অ্যাপ্লিকেশন প্যাকেজ আইডি (বা প্যাকেজের নাম)" হিসাবে উল্লেখ করেছেন।


0

ইনস্টলেশনগুলি ট্র্যাক করার জন্য, আপনি উদাহরণস্বরূপ একটি ইউআইডি ব্যবহার করতে পারেন এবং কোনও অ্যাপ্লিকেশন ইনস্টলের পরে প্রথমবার চালিত হলে কেবল নতুন তৈরি করতে পারে। এখানে একটি স্থিতিশীল পদ্ধতি ইনস্টলেশন.id (প্রসঙ্গ প্রসঙ্গ) সহ "ইনস্টলেশন" নামে একটি শ্রেণীর স্কেচ দেওয়া আছে। আপনি ইনস্টল ফাইলটিতে আরও ইনস্টলেশন-নির্দিষ্ট ডেটা লেখার কল্পনা করতে পারেন।

public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {

    if (sID == null) {  
       File installation = new File(context.getFilesDir(), INSTALLATION);
       try {
           if (!installation.exists())
               writeInstallationFile(installation);
           sID = readInstallationFile(installation);
       } catch (Exception e) {
           throw new RuntimeException(e);
       }
    }
   return sID;
}

private static String readInstallationFile(File installation) throws IOException {
   RandomAccessFile f = new RandomAccessFile(installation, "r");
   byte[] bytes = new byte[(int) f.length()];
   f.readFully(bytes);
   f.close();
   return new String(bytes);
}

private static void writeInstallationFile(File installation) throws IOException {
   FileOutputStream out = new FileOutputStream(installation);
   String id = UUID.randomUUID().toString();
   out.write(id.getBytes());
   out.close();
}

}

ইউন https://github.com/MShoaibAkram/Android-Unique- প্রয়োগ- আইডিতে আরও দেখতে পারেন


0

অ্যাপআইডি (বা প্যাকেজের নাম, কেউ কীভাবে বলেছেন) পাওয়ার জন্য, কেবল এটিকে কল করুন:

তবে নিশ্চিত হয়ে নিন যে আপনি BuildConfigনিজের অ্যাপ্লিকেশন আইডি প্যাকেজ পাথ দিয়ে আমদানি করছেন

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