【问题标题】:Toast doesn't work on real device after adding permissions添加权限后,Toast 在真机上不起作用
【发布时间】:2017-12-21 01:21:03
【问题描述】:

我正在处理 android 上的一个奇怪错误: 我想用 Toast 打印一些东西,它在模拟器和设备上都很好用。 但是在我在 Manifest 文件中添加这一行之后(我必须,因为我想读取联系人):

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

所有的 toast 都不能在真实设备上运行(但仍然可以在模拟器上运行)。

代码:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    buttonFont= Typeface.createFromAsset(getAssets(), "tamir.ttf");

    Toast.makeText(MainActivity.this,"welcome", Toast.LENGTH_SHORT ).show();
    addSingleClickListener();
}

我不知道如何解决它。请帮忙...

【问题讨论】:

  • 我有两种可能:1)在手机无法到达的位置调用toast,可能是因为您将其放置在您首先检查是否有权限的位置( 23+ 需要运行时询问权限) 2)由于崩溃、异常或其他阻止它被访问的东西,toast 永远不会被调用。请添加代码,否则这是猜测
  • 没有理由添加代码,因为我在应用程序的任何地方都添加了 toasts 以确保我没有错。我在第一个 Main 类的 onCreate 中添加了 toast。在模拟器上它可以工作,在设备上 - 不是。
  • shalom,设备的日志中是否有任何内容?也许例外?
  • 我还没有将设备连接到计算机,只是通过电子邮件发送了apk。我认为有人会给我一个很好的理由,说明为什么许可导致它不起作用。
  • 问题解决了吗?怎么样?

标签: android android-toast


【解决方案1】:

我遇到了同样的问题,在我的真实设备上,应用程序在某些 Toast 上崩溃了,而有些则正常工作。在模拟器中,所有 Toast 都可以正常工作。

我创建了 Toast 对象

Toast t = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT);

解决方案是删除以下几行以获得更大的 Toast:

if(big) {
  LinearLayout l = (LinearLayout) t.getView();
  TextView mtv = (TextView) l.getChildAt(0);
  mtv.setTextSize(18);
}

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2015-12-24
    • 2011-05-30
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多