应用程序无法在Android 4.0上运行

时间:2014-01-05 22:22:55

标签: java android xml

我的程序从android 2.1到android 2.3工作得非常好 但它不适用于更高版本的android。 当应用程序在2.3以上的版本上执行时,它不会给出任何异常。 当在2.3或更低版本上运行时,正确拨打该号码并正确执行imei或其他查询但是当应用程序在更高版本上运行时只有拨号盘打开但代码打开但未拨打号码/代码 我在我的清单文件中使用了

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

我的MainActivity Class

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;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

对于某些代码,您可以尝试使用Intent.ACTION_CALL代替Intent.ACTION_DIAL

但对于大多数代码我担心你不能这样做。

您可以查看this answer

  

......一开始,可以直接拨打USSD   应用程序中的代码(使用意图Intent.ACTION_DIAL)[...]   但实际上这被认为是一个   系统的漏洞,因为有人可能写恶意   软件,甚至更多,在可能的网站中插入恶意代码   甚至擦手机或阻止SIM卡[...]   此时很难找到任何设备   仍然很脆弱。

转到答案以了解更多信息

答案 1 :(得分:0)

您不应该使用拨号器执行这些任务。而是使用适当的Android API来获取此信息。以下是两个让您快速入门的问题:

有关详细信息,请参阅TelephonyManager参考文档和Android培训文章Monitoring the Battery Level and Charging State