我是Android的新手我在Android应用程序中工作,从Android应用程序分享Twitter推文,我收到错误retrieveRequestToken引发“与服务提供商的通信失败:null”。我从堆栈流程中得到了一个解决方案(http://stackoverflow.com/questions/8534831/method-retrieverequesttoken-raises-communication-with-the-service-provider-fail)。它说我们将能够通过StrictMode解决这个问题。我不知道如何申请。
这是ma代码:
try {
Log.i(TAG, "Retrieving request token from Google servers");
final String url = provider.retrieveRequestToken(consumer,Constants.OAUTH_CALLBACK_URL);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url))
.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_FROM_BACKGROUND);
context.startActivity(intent);
} catch (Exception e) {
Log.e("Error",e+"");
}
请帮帮我。 提前谢谢。
答案 0 :(得分:1)
试一试 -
private void enableStrictMode(Bundle savedInstanceState) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
super.onCreate(savedInstanceState);
}
@Override
public void onCreate(Bundle savedInstanceState) {
enableStrictMode(savedInstanceState);
setContentView(layout.main);
}
答案 1 :(得分:0)
Suvan Roy提供的答案将帮助您在控制台中看到一种方法花费太多时间(在UI线程中),但不是为什么它不起作用。
我的建议:
在您的应用程序类(如果有的话)和您的活动中执行此操作
@Override
public void onCreate(Bundle savedInstanceState) {
if (BuildConf.DEBUG){
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
}
super.onCreate(savedInstanceState);
// your code here
}
为了更好地利用资源,我建议通过Handler或AsynchTask调用网络提供程序。查看代码示例:
new Handler().post( new Runnable()
{
@Override
public void run()
{
Log.i(TAG, "Retrieving request token from Google servers");
final String url = provider.retrieveRequestToken(consumer,Constants.OAUTH_CALLBACK_URL);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url))
.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_FROM_BACKGROUND);
context.startActivity(intent);
}
} );
我希望你找到问题的根源并且你利用我的建议;)