2014-01-05 3 views
0

Моя программа работает отлично от android 2.1 до android 2.3 Но его не работает над более высокой версией android. Это не дает никаких исключений, когда приложение выполняется в более высокой версии, чем 2.3. При запуске на 2.3 или более поздней версии номер правильно набран, а imei или другой запрос выполняется правильно, но когда приложение запущено на более высокой версии, только dialpad с кодом открывается, но номер/код не набирается Я использовал в своем файл манифестаПриложение не woking на android 4.0

<uses-sdk 
     android:minSdkVersion="7" 
     android:targetSdkVersion="18" /> 

И мой MainActivity Класс

public class Motorola extends Activity implements OnClickListener{ 
    TextView tvm1,tvm2,tvm3; 
    Intent myIntent; 
    String m=Uri.encode("#"); 
    String str; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.motorola); 
     tvm1=(TextView) findViewById(R.id.tvmo1); 
     tvm2=(TextView) findViewById(R.id.tvmo3); 
     tvm3=(TextView) findViewById(R.id.tvmo2); 
     AdView adv3=(AdView) findViewById(R.id.ad4); 
     adv3.loadAd(new AdRequest()); 
     tvm1.setOnClickListener(this); 
     tvm2.setOnClickListener(this); 
     tvm3.setOnClickListener(this); 
    } 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     /* *#06#:DISPLSYS IMEI NUMBER. 
    *#*#4636#*#*:DISPLAY INFORMATION ABOUT PHONE, BATTERY AND USAGE STATISTICS. 
    ##7764726:MOTOROLA DROID HIDDEN SERVICE MENU. THE DEFAULT SPC PASSWORD IS SIX ZEROES (000000).*/ 
     switch(v.getId()) 
     { 
     case R.id.tvmo1: 
      str="*"+m+"06"+m; 
      myIntent=new Intent(Intent.ACTION_DIAL); 
      myIntent.setData(Uri.parse("tel:"+str)); 
      startActivityForResult(myIntent,1); 
      break;   

     case R.id.tvmo2: 
      str="*"+m+"*"+m+"4636"+m+"*"+m+"*"; 
      myIntent=new Intent(Intent.ACTION_DIAL); 
      myIntent.setData(Uri.parse("tel:"+str)); 
      startActivityForResult(myIntent,1); 
      break;   
     case R.id.tvmo3: 

      str=m+m+7764726; 
      myIntent=new Intent(Intent.ACTION_DIAL); 
      myIntent.setData(Uri.parse("tel:"+str)); 
      startActivityForResult(myIntent,1); 
      break; 
     } 
    } 
} 
+1

Это, скорее всего, функция безопасности, которая запрещает приложениям набирать коды, которые могут нанести вред телефону ... Я, к сожалению, не смог найти что-либо, чтобы подтвердить это, хотя –

+0

Спасибо за ваш ответ. Сэр, можете ли вы предложить какое-либо решение для Эта проблема? – nitin34

ответ

0

для некоторых кодов, вы можете попробовать использовать Intent.ACTION_CALL вместо Intent.ACTION_DIAL

Но для большинства коды Я боюсь, что вы не сможете этого сделать.

Вы можете посмотреть на this answer

... в самом начале, можно было непосредственно вызывать USSD коды из приложения (с помощью намерения Intent.ACTION_DIAL) [...] Но на самом деле это считалось уязвимостью системы , поскольку кто-то мог написать вредоносное программное обеспечение или даже больше, вставить вредоносный код на веб-сайт, который мог бы даже стереть ваш телефон или заблокировать сим-карту [...] На этом то будет трудно найти какое-либо устройство все еще уязвимым.

Перейти к ответу, чтобы узнать больше

0

Вы не должны использовать номеронабиратель для выполнения этих задач. Вместо этого используйте соответствующие API Android для получения этой информации. Вот два вопроса, чтобы вы начали быстро:

Для получения более подробной информации, обратитесь к справочной документации TelephonyManager и статью Monitoring the Battery Level and Charging State Android обучения.

Смежные вопросы