小编tsm*_*ith的帖子

反思访问高级电话功能

我正在尝试使用反射来访问电话API的一些未发布的功能.目前我无法实例化serviceManager将"电话"服务作为活页夹所需的对象,然后我可以使用该对象来实例化拨打电话,结束通话等所需的电话对象......

目前我打电话的时候

serviceManagerObject = tempInterfaceMethod.invoke(null, new Object[] { new Binder() });
Run Code Online (Sandbox Code Playgroud)

它返回nullPointerException.我相信这与创建一个新的Binder而不是发送适当的粘合剂(我不确定哪个是合适的)有关

public void placeReflectedCall() throws ClassNotFoundException,
        SecurityException, NoSuchMethodException, IllegalArgumentException,
        IllegalAccessException, InvocationTargetException,
        InstantiationException {
    String serviceManagerName = "android.os.IServiceManager";
    String serviceManagerNativeName = "android.os.ServiceManagerNative";
    String telephonyName = "com.android.internal.telephony.ITelephony";

    Class telephonyClass;
    Class telephonyStubClass;
    Class serviceManagerClass;
    Class serviceManagerStubClass;
    Class serviceManagerNativeClass;
    Class serviceManagerNativeStubClass;

    Method telephonyCall;
    Method telephonyEndCall;
    Method telephonyAnswerCall;
    Method getDefault;

    Method[] temps;
    Constructor[] serviceManagerConstructor;

    // Method getService;
    Object telephonyObject;
    Object serviceManagerObject;
    String number = "1111111111";

    telephonyClass = Class.forName(telephonyName);
    telephonyStubClass = telephonyClass.getClasses()[0];
    serviceManagerClass …
Run Code Online (Sandbox Code Playgroud)

java android

20
推荐指数
1
解决办法
2万
查看次数

可以通过sdk实例化telephony.Phone对象吗?

我正在尝试获取一个电话对象,以便我可以在我的应用程序中呼叫和召开两个号码.

我试过使用静态PhoneFactory.makeDefaultPhones((Context)this)但没有运气.

String phoneFactoryName = "com.android.internal.telephony.PhoneFactory";
String phoneName = "com.android.internal.telephony.Phone";
Class phoneFactoryClass = Class.forName(phoneFactoryName);
Class phoneClass = Class.forName(phoneName);
Method getDefaultPhone = phoneFactoryClass.getMethod("getDefaultPhone");
Object phoneObject = getDefaultPhone.invoke(null);
Run Code Online (Sandbox Code Playgroud)

错误 - 由java.lang.RuntimeException引起:必须从Looper线程调用PhoneFactory.getDefaultPhone

android

15
推荐指数
2
解决办法
2万
查看次数

FileNotFoundException:仅限Play商店崩溃日志中的res/drawable-xhdpi-v4/foo.png

在我们4.0发布的应用程序版本的过去两天里,我们已经看到了大约40起这些崩溃事件.在查看崩溃日志之后,我们发现它自我们的应用程序版本3.3起就存在了.我们无法在内部重现这一点.

进一步的研究表明这个问题在其他应用程序中很普遍,但我无法找到解决方案或表明Google已经意识到这个问题.

崩溃本身发生在onCreate()中的setContentView(R.layout.foo)方法调用上

笔记:

  • 我们将API限制为版本4和目标15.
  • 我们已经在mdpi,hdpi,xhdpi手机和平板电脑上看到至少2.2 - 4.0.3.
  • 用户注释指定应用程序立即崩溃(预期)并且应用程序启动器中的Evernote图标变为默认应用程序图标(无法读取任何可绘制的图标).
  • 崩溃不仅限于一个特定的drawable,我们在日志中看到了许多不同的,但它们都"看起来"是图像绘制,而不是颜色,布局,xml文件等......
  • 这不仅限于9个补丁,它发生在常规.png和.9.png上

我们的可绘制文件夹看起来像附图 可绘

  • 我们只在我们的drawable文件夹中存储xml

堆栈跟踪:

android.content.res.Resources$NotFoundException: File res/drawable/ics_tab_title_unselected.xml from drawable resource ID #0x7f02016f
at android.content.res.Resources.loadDrawable(Resources.java:1697)
at android.content.res.Resources.getDrawable(Resources.java:581)
at android.view.View.setBackgroundResource(View.java:7533)
at com.evernote.ics.ActionBarTabbedTitle.a(ActionBarTabbedTitle.java:103)
at com.evernote.ics.j.a(ActivityActionBar.java:150)
at com.evernote.ics.a.c(ActionBar.java:731)
at com.evernote.ics.a.p(ActionBar.java:440)
at com.evernote.ics.a.g(ActionBar.java:423)
at com.evernote.ics.j.m(ActivityActionBar.java:68)
at com.evernote.ics.phone.SwipeableTabbedActivityAbstract.s(SwipeableTabbedActivityAbstract.java:990)
at com.evernote.ics.phone.SwipeableTabbedActivityAbstract.a(SwipeableTabbedActivityAbstract.java:662)
at com.evernote.ics.phone.SwipeableTabbedActivityAbstract.b(SwipeableTabbedActivityAbstract.java:617)
at com.evernote.ics.phone.PhoneMainActivity.b(PhoneMainActivity.java:113)
at com.evernote.ui.EvernoteFragment.a(EvernoteFragment.java:136)
at com.evernote.ui.EvernoteFragment.a(EvernoteFragment.java:132)
at com.evernote.ui.EvernoteFragment.d(EvernoteFragment.java:128)
at com.evernote.ics.phone.b.onItemClick(HomeFragment.java:1324)
at android.widget.AdapterView.performItemClick(AdapterView.java:284)
at android.widget.ListView.performItemClick(ListView.java:3513)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at …
Run Code Online (Sandbox Code Playgroud)

android

10
推荐指数
1
解决办法
5250
查看次数

AlertDialog MultiChoiceItems监听器问题

我目前正在使用AlertDialog.builder为用户创建多选列表(复选框).这很好用,除了我们想要其中一个按钮取消选择列表中的所有其他按钮.

builder.setMultiChoiceItems(list, checked,
  new DialogInterface.OnMultiChoiceClickListener() {
   public void onClick(DialogInterface dialog,
     int item, boolean isChecked) {

    if(item == ANY_ITEM_BUT_0)
    {

     ((AlertDialog) dialog).getListView().setItemChecked(0, false);

    }
   }
  });
Run Code Online (Sandbox Code Playgroud)

当使用"true"时它将成功检查该框,但是当使用false时它不会取消选中它(除非我手动将其手动设置为true.)是否有一个单独的监听器我应该用来检测用户何时单击这些?在我看来,有两个复选标记设置,一个由"setItemChecked(0,true);",一个通过实际选择它.

这已经让我疯了几天了,任何帮助都会非常感激.

android android-1.5-cupcake

7
推荐指数
2
解决办法
3927
查看次数

返回布尔方法时需要的解释

我一直在查看反编译的APK文件中的一些代码,并运行此语法以返回我之前没有见过的布尔条件.有人解释这是如何工作的?

public static boolean is2G(NetworkType paramNetworkType)
{
    if ((EDGE.equals(paramNetworkType)) || (IDEN.equals(paramNetworkType)) || (CDMA.equals(paramNetworkType)) || (GPRS.equals(paramNetworkType)));
    for (int i = 1; ; i = 0)
        return i;
}
Run Code Online (Sandbox Code Playgroud)

java android

4
推荐指数
1
解决办法
249
查看次数

标签 统计

android ×5

java ×2

android-1.5-cupcake ×1