انجمن سایت کلیدستان



بلاک کردن تماس (در برنامه نویسی اندروید)زمان کنونی: ۱۳۹۵/۰۹/۱۶، ۰۵:۲۰ ق.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: Aryana
آخرین ارسال: Aryana
پاسخ 3
بازدید 479

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بلاک کردن تماس (در برنامه نویسی اندروید)

بلاک کردن تماس (در برنامه نویسی اندروید)

#1
یک برنامه بلک لیست دارم مینویسم که هر تعداد شماره که کاربر خواست رو به دیتابیس اضافه کنه و اون شماره ها اگه زنگ زدن تماس بلاک بشهبار اولمه دارم برنامه اندروید مینویسم به مشکل خوردم کد مربوط به ریجکت تماس رو از اینترنت پیدا کردم   کلاس رو یک پکیج جدید ساختم و اینتفرفیس رو هم در پکیج جدیده گذاشتم
پرمیشن های لازم رو هم اضافه کردمولی نمیدونم به اکتیویتی چی باید اضافه کنم و یا کجا این تابع رو باید صدا بزنم.یعنی نمیدونم از این کد چجوری باید استفاده کنم

ممنون میشم اگه راهنماییم کنین
اگه راه بهتری هم برای بلاک کردین یه سری شماره خاص هست بگین


Interface:
کد پی‌اچ‌پی:
public interface ITelephony {

        
boolean endCall();

        
void answerRingingCall();

        
void silenceRinger();

  } 


کد پی‌اچ‌پی:
public class IncomingCallReceiver extends BroadcastReceiver {
    private 
ITelephony telephonyService;
    private 
String blacklistednumber "+458664455";

    @
Override
    
public void onReceive(Context contextIntent intent) {

       
TelephonyManager tm = (TelephonyManagercontext.getSystemService(Context.TELEPHONY_SERVICE);
       try {
         Class 
= Class.forName(tm.getClass().getName());
         
Method m c.getDeclaredMethod("getITelephony");
         
m.setAccessible(true);
         
ITelephony telephonyService = (ITelephonym.invoke(tm);
         
Bundle bundle intent.getExtras();
         
String phoneNumber bundle.getString("incoming_number");
         
Log.e("INCOMING"phoneNumber);
         if ((
phoneNumber != null) && phoneNumber.equals(blacklistednumber)) { 
            
telephonyService.silenceRinger();
            
telephonyService.endCall();
            
Log.e("HANG UP"phoneNumber);
         }

       } catch (
Exception e) {
         
e.printStackTrace();
       }


 

 
پاسخ

بلاک کردن تماس (در برنامه نویسی اندروید)

#2
سلام.
فرصت نمی کنم اصل کدها را بررسی کنم، ولی به نکات زیر توجه کنید :
در کدتان از BroadcastReceiver استفاده شده :

کد پی‌اچ‌پی:
public class IncomingCallReceiver extends BroadcastReceiver 

بنابراین باید receiver (تگ receiver) را برای آن در فایل AndroidManifest.xml ذکر کنید.

در مورد BroadcastReceiver ، لینک زیر را ببینید :

http://www.vogella.com/tutorials/Android...ticle.html

در لینک فوق، ابتدا BroadcastReceiver را تعریف کرده (با نام MyBroadcastReceiver) :

کد پی‌اچ‌پی:
package de.vogella.android.alarm;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Vibrator;
import android.widget.Toast;

public class 
MyBroadcastReceiver extends BroadcastReceiver {
  @
Override
  
public void onReceive(Context contextIntent intent) {
    
Toast.makeText(context"Don't panik but your time is up!!!!.",
        
Toast.LENGTH_LONG).show();
    
// Vibrate the mobile phone
    
Vibrator vibrator = (Vibratorcontext.getSystemService(Context.VIBRATOR_SERVICE);
    
vibrator.vibrate(2000);
  }



بعد آن را در فایل AndroidManifest.xml ذکر کرده است (با تگ receiver) :

کد پی‌اچ‌پی:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.vogella.android.alarm"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="15" />

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

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <activity
            android:name=".AlarmActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="MyBroadcastReceiver" >
        </receiver>
    </application>

</manifest> 

همچنین permission های لازم برای کد را نیز یافته  و در فایل AndroidManifest.xml ذکر کنید.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط Aryana

بلاک کردن تماس (در برنامه نویسی اندروید)

#3
خیلی ممنون
من این خط را به مانیفست اضافه کردم
کد پی‌اچ‌پی:
<receiver android:name="IncomingCallReceiver" >
        </
receiver
این پرمیشن ها رو هم قرار دادم
کد پی‌اچ‌پی:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<
uses-permission android:name="android.permission.CALL_PHONE"/>
<
uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /
<
uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" /> 

ولی خط سوم رو ارور میداد که موقتا پاک کردم تا دلیلش رو بفهمم
برنامه رو امتحان کردم و کار نمیکنه :\
همه ی کلاس ها و اینتفرفیس باید تو یک پکیج باشن؟
نیازی نیست تا من تابع onReceive رو جایی صدا کنم؟

 
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)