ورود

View Full Version : دسترسی INSTALL_PACKAGES



darkenerboy
چهارشنبه 09 مهر 1393, 12:38 عصر
سلام به همه دوستان و اساتید
من توی برنامم به دسترسی زیر احتیاج دارم
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
وقتی که برنامم رو اجرا میکنم با خطاری زیر مواجه میشم
java.lang.SecurityException: Permission Denial
سرچ زدم به این جواب رسیدم

1) Put your app in /system/app
2) Sign the app with the system's key
3) In the manifest.xml file, put this attribute inside the tag manifest:
<manifest android:sharedUserId="android.uid.system" ...

حالا مشکل اینکه نمیتونم هیچکدوم از اینا رو انجام بدم
وقتی که قسمت آخر رو هم به برنامم اضافه میکنم
خطای زیر رخ میده و برنامه نصب نمیشه
Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
برای اینم سرچ زدم به این جواب رسیدم

1) Removed existing application (if it is already installed )
2) Removed share user ID from android manifest
3) Bulid the application.
4) Now enter share user ID again
5) build the application 1 more time

اما وقتی این کارا رو هم انجام میدم باز هم مشکلم رفع نمیشه
البته شاید این مشکل به خاطر این باشه که نمیتونم قسمت اول و دوم رو انجام بدم
لطفا اطلاعات خودتون رو در اختیار من قرار بدید

با تشکر از همه

SASAN_AH
چهارشنبه 09 مهر 1393, 16:07 عصر
براي نصب برنامه نياز داري ؟

darkenerboy
چهارشنبه 09 مهر 1393, 16:25 عصر
حیف استفاده از "پ ن پ" در یک محیط علمی کار درستی نیست :لبخند:

بعله

و در ادامه بگم میدونم میشه از Intent برای این کار استفاده کرد
ولی من میخوام که برنامه خودم این کار رو انجام بده
با تشکر از توجه دوستان

SASAN_AH
چهارشنبه 09 مهر 1393, 18:34 عصر
خب با Intent بزن
چرا بياي كاري كه ميشه سيستم بكنه بزاري رو دوش برنامه !:لبخند:

rubiks.kde
چهارشنبه 09 مهر 1393, 20:31 عصر
این دسترسی یه دسترسی سیستمی هست و باید حتما برنامه هم به صورت سیستمی sign بشه.
برای sign کردن هم مشکلات زیاده چون key که با اون ساین میشه برای هر شرکت سازنده فرق میکنه (دقیق مثل تولید کننده های برنامه) و این کلید هم زمان کامپایل خود آندروید به کار میره پس عملا اگه شرکت این کلید رو نده برای برنامه نویس در دسترس نیست.

این چیزی هست که وجود داره و شما برای استفاده از این دسترسی ها باید برنامه رو با کلیدی که خود همون سیستم sign شده sign کنید.

ولی روش هایی هست که فک نکنم به دردتون بخوره و اونم اینه که برای سیستم هایی که به صورت خالص نصب شدن(مثلا شرکت سازنده گوشی کد رو خودش کامپایل نکرده و از دیفالت گوگل استفاده کرده) این کلید توی ادرس
{Android Source}/build/target/product/security
قرار داره و دو فایل platform.pk8 + platform.x509.pem هستن و میتونید با دستور زیر به کلید برسید.
./keytool-importkeypair -k google_certificate.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
برنامه keytool-importkeypair (https://github.com/getfatday/keytool-importkeypair) رو باید داشته باشید.

برای این کلید به دست آمده alias هست platform و پسوردش هم android

حالا برنامه هایی که با این sign بشن میتونن به عنوان برنامه سیستمی روی گوشی هایی که هیچ تغییر ندادن و از همین key‌ برای sign استفاده کردن استفاده کنید.ولی خوب درصد خیلی بالایی خودشون کلید دارن و این کار نمیکنه

یه راه هم داره خودت بیایی یه rom‌ رو از اول کامپایل کنی و از key خودت استفاده کنی:لبخند:

darkenerboy
پنج شنبه 10 مهر 1393, 07:33 صبح
ممنون سعید جان
از جواب و راهنمایی کاملت
ولی بعضی اپ ها مثل eset میان یه تعییدی از کاربر میگیرن، مثل اینکه خودشون رو تو گوشی ثبت میکنن و توی تنظیمات تو قسمت Security هم میان
اون کار جچوری انجام میشه !

rubiks.kde
پنج شنبه 10 مهر 1393, 18:58 عصر
این بحث Device Administration (http://developer.android.com/guide/topics/admin/device-admin.html) رو ببین شاید به درد بخوره.