ใน Android ฉันจะรับ id ของแอปพลิเคชันโดยทางโปรแกรมได้อย่างไร (หรือโดยวิธีอื่น) และฉันจะสื่อสารกับแอปพลิเคชันอื่นโดยใช้ id นั้นได้อย่างไร
ใน Android ฉันจะรับ id ของแอปพลิเคชันโดยทางโปรแกรมได้อย่างไร (หรือโดยวิธีอื่น) และฉันจะสื่อสารกับแอปพลิเคชันอื่นโดยใช้ id นั้นได้อย่างไร
คำตอบ:
หากคุณกำลังมองหาค่าที่กำหนดโดยapplicationIdใน gradle คุณสามารถใช้
BuildConfig.APPLICATION_ID
หากapplication idคุณกำลังอ้างถึงpackage nameคุณสามารถใช้เมธอดContext::getPackageName( http: // http: //developer.android.com/reference/android/content/Context.html#getPackageName%28%29 )
ในกรณีที่คุณต้องการสื่อสารกับแอปพลิเคชันอื่นมีหลายวิธี:
หากคุณสามารถอธิบายความต้องการของคุณได้อย่างละเอียดชุมชนก็จะสามารถช่วยเหลือคุณได้ดีขึ้น
Context.getPackageName() จะส่งคืน ID แอปพลิเคชันไม่ใช่ชื่อแพ็กเกจ (แม้ว่าโดยปกติจะเหมือนกันก็ตาม) ชื่อที่ค่อนข้างสับสนของวิธีนี้เป็นแบบดั้งเดิม ที่มา: developer.android.com/studio/build/application-id
ฉันไม่แน่ใจว่า "รหัสแอปพลิเคชัน" ที่คุณอ้างถึงคืออะไร แต่สำหรับตัวระบุเฉพาะของแอปพลิเคชันของคุณคุณสามารถใช้:
getApplication (). getPackageName () วิธีการจากกิจกรรมปัจจุบันของคุณ
getApplicationContext().getPackageName()เหรอ?
ชื่อแพ็กเกจคือรหัสแอป Android ของคุณ
สตริง appId = BuildConfig.APPLICATION_ID
หรือ
https://play.google.com/store/apps/details?id=com.whatsapp
รหัสแอป = com.whatsapp
ขั้นตอนที่ 1: เปิด Google Play Store
ขั้นตอนที่ 2: เปิดแอพใดก็ได้ใน App Store ตัวอย่าง: facebook
ขั้นตอนที่ 3: คลิกที่แอพใดก็ได้และดูที่ลิงค์เบราว์เซอร์และ At the End id = com.facebook.katana & hl = thจะอยู่ที่นั่นและนี่คือรหัสเฉพาะแอพของคุณ
คุณจะได้รับรหัสกระบวนการที่แอปพลิเคชันของคุณทำงานใน:
สุดท้ายคง int android.os.Process.myPid ()
ส่งคืนตัวระบุของกระบวนการนี้ซึ่งสามารถใช้ได้กับ killProcess (int) และ sendSignal (int, int)
ฉันไม่แน่ใจว่าคุณต้องการรหัสแอป / การติดตั้งเพื่ออะไร แต่คุณสามารถตรวจสอบความเป็นไปได้ที่มีอยู่ในบทความดีๆจากนักพัฒนา Android:
สรุป:
UUID.randomUUID() สำหรับการสร้าง id ในครั้งแรกที่แอปทำงานหลังจากการติดตั้งและการเรียกคืนอย่างง่ายในภายหลังTelephonyManager.getDeviceId() สำหรับตัวระบุอุปกรณ์จริงSettings.Secure.ANDROID_ID บนอุปกรณ์ที่ค่อนข้างทันสมัยPackageInfo.sharedUserIdฟิลด์จะแสดง ID ผู้ใช้ที่ได้รับมอบหมายในไฟล์ Manifest
หากคุณต้องการให้สองแอปพลิเคชันมี userId เดียวกันเพื่อให้สามารถเห็นข้อมูลของกันและกันและเรียกใช้ในกระบวนการเดียวกันจากนั้นกำหนด userId เดียวกันในรายการ:
android:sharedUserId="string"
สองแพ็คเกจที่มี sharedUserId เดียวกันจำเป็นต้องมีลายเซ็นเดียวกันด้วย
ฉันอยากจะแนะนำให้อ่านที่นี่เพื่อเขยิบไปในทิศทางที่ถูกต้อง
หากจุดประสงค์ทั้งหมดคือการสื่อสารข้อมูลกับแอปพลิเคชันอื่น ๆ ให้ใช้เมธอด sendBroadcast ของ Intent
หากคุณใช้ระบบสร้าง ** Gradle ใหม่getPackageNameจะส่งคืนรหัสแอปพลิเคชันอย่างผิดปกติไม่ใช่ชื่อแพ็คเกจ ดังนั้นคำตอบของ MasterGaurav จึงถูกต้อง แต่เขาไม่จำเป็นต้องเริ่มต้นด้วย ++
หากตามรหัสแอปพลิเคชันคุณหมายถึงชื่อแพ็คเกจ ...
ดูเพิ่มเติมเกี่ยวกับความแตกต่างที่นี่
** ไม่ใช่เรื่องใหม่ในตอนนี้
++ ฉันตระหนักดีว่าคำตอบของเขาเหมาะสมอย่างยิ่งในปี 2554
Android App ES File Explorer แสดงชื่อแพ็กเกจ Android ในส่วน User Apps ซึ่งมีประโยชน์สำหรับ Bitwarden Bitwarden เรียกสิ่งนี้ว่า "รหัสแพ็กเกจแอปพลิเคชัน android (หรือชื่อแพ็กเกจ)"
ในการติดตามการติดตั้งตัวอย่างเช่นคุณสามารถใช้ UUID เป็นตัวระบุและสร้างใหม่ในครั้งแรกที่แอปทำงานหลังจากการติดตั้ง นี่คือภาพร่างของคลาสชื่อ“ การติดตั้ง” ด้วยวิธีการหนึ่งแบบคงที่ Installation.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-Application-ID
สำหรับการรับ AppId (หรือชื่อแพ็คเกจบางคนพูดว่าอย่างไร) ให้เรียกสิ่งนี้:
แต่ต้องแน่ใจว่าคุณนำเข้าBuildConfigด้วยเส้นทางแพ็กเกจ id ของแอป
BuildConfig.APPLICATION_ID