PDA

View Full Version : اجرای برنامه با Dialer



barnamenevisjavan
پنج شنبه 18 اردیبهشت 1393, 12:54 عصر
سلام من برنامم با کد زیر مخفی شده آیکونش حالا میخوام مثلا وقتی *1234* گرفتم از گوشی برنامم اجرا بشه لطفا راهنمایی کنید
PackageManager pm = getApplicationContext().getPackageManager();
pm.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

barnamenevisjavan
جمعه 19 اردیبهشت 1393, 08:49 صبح
کسی نیست راهنمایی کنه؟

rubiks.kde
جمعه 19 اردیبهشت 1393, 10:21 صبح
با استفاده از برودکست مربوط به تماس های خروجی این کار رو انجام بدید.

ابتدا یک کلاس برودکست بنویسید به این صورت :

publicclassMyOutgoingCallHandlerextendsBroadcastRe ceiver{@Override
public void onReceive(Context context, Intent intent) {
// Extract phone number reformatted by previous receivers
String phoneNumber = getResultData();
if (phoneNumber == null) {
// No reformatted number, use the original
phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
}


if(phoneNumber.equals("1234")){ // DialedNumber checking.
// My app will bring up, so cancel the broadcast
setResultData(null);


// Start my app
Intent i=new Intent(context,MainActivity.class);
i.putExtra("extra_phone", phoneNumber);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}

حالا توی منیفست هم تعریف کنید :

<receiverandroid:name="MyOutgoingCallHandler"> <intent-filter >
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter> </receiver>


دسترسی لازم رو هم بدید :

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

حالا هروقت مثلا شماره 1234 گرفته بشه و شما اون رو توی برودکست بررسی میکنید و اگه شماره مورد نظر شما بود ، برودکست و غیرفعال میکنید تا دیگر برنام ها کاری نداشته باشند و برنامه خودتون رو اجرا میکنید

barnamenevisjavan
جمعه 19 اردیبهشت 1393, 11:53 صبح
با استفاده از برودکست مربوط به تماس های خروجی این کار رو انجام بدید.
حالا هروقت مثلا شماره 1234 گرفته بشه و شما اون رو توی برودکست بررسی میکنید و اگه شماره مورد نظر شما بود ، برودکست و غیرفعال میکنید تا دیگر برنام ها کاری نداشته باشند و برنامه خودتون رو اجرا میکنید

داداش من مبتدی هستم اینایی که گفتی خیلی هاشو متوجه نشدم ،اگر کدهای بالا رو توی برنامه قرارش بدم با شماره گیری 1234 برنامم بالا میاد؟
<receiverandroid:name="MyOutgoingCallHandler"> <intent-filter ><action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter> </receiverandroid:name>
این کد رو میزارم تو منیفست خطا میده همش Attribute is missing the Android namespace prefix

barnamenevisjavan
جمعه 19 اردیبهشت 1393, 19:01 عصر
آپپپپپپپپپپپپ

rubiks.kde
جمعه 19 اردیبهشت 1393, 23:10 عصر
یکم در مورد برودکست بخون و بنویس . این تنها روش این کاره

سارا_1372
شنبه 20 اردیبهشت 1393, 09:15 صبح
فکر کنم لینک زیر میتونه براتون مفید باشه:
http://stackoverflow.com/questions/9569118/how-do-you-receive-outgoing-call-in-broadcastreceiver
-------------------------------------------------
کد بالایی هم خودش داره میگه که مشکل از prefix یعنی ما اتریبوت receiverandroid:name رو نداریم.
<receiver android:name=MyOutgoingCallHandler">
---------------------------------------------------------------------------
mainfest :


<manifest>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<application>
...
<receiver android:name=MyOutgoingCallHandler">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
...
</application>
</manifest>